Масиви в SESSION
10 отговора
304 прегледа
Масиви в SESSION
Мога ли да записвам МАСИВИ в session и съответно по какъв начин става това(за масивите!!!)? Как после мога да ги извлека? Броя на елементите в масива се определя по време на изпълнение на програмата.
Опитвам се да го направя, но нещо не се получава както трябва.
Опитвам се да го направя, но нещо не се получава както трябва.
Re: Масиви в SESSION
V sessiite mogat da bude zapisvana vsiakakva informacia. Vsichki primitivni tipove mogat da otidat tam. Vkliuchitelno obekti. Ne sum 100% siguren, no properties na obektite mogat da se izpozlvat dori i bez da si include-nal file-a s definiciata na class-a.
Ta na vuprosa. Vsichko stava lesno i burzo. Ako si s novo PHP to reshenieto e $_SESSION = $your_array;
PHP-tata pod 4.1.0 session_* funkciite. Imaj v predvid che nastroenieto e kum pulno izpolzvane samo na $_SESSION masiva i session_* funkciite v budeshteto mogem da gi vidim deprecate-nati. Kato polzvash vsichki sesiini promenlivi prez $_SESSION is garantirash pone v tazi si chast che kodut ti shte raboti pri register_globals Off. Vnimanie : ot versia 4.2.3 vkliuchtelno ne triabva da se smesva izpolzvaneto na session_* funkciite i chetene ot globals sus rabotata s $_SESSION i v versii predi 4.1.0 $HTTP_SESSION_VARS (to tova e referencia kum $_SESSION). Taka che ako polzvash funckiite predlagam ti da minesh na $_SESSION. Vednug zapazeni danni v nego mislia che sessiata avtomatichno se startira kato svurshi scripta i promenlivite se zapazvat.
Andrey
Ta na vuprosa. Vsichko stava lesno i burzo. Ako si s novo PHP to reshenieto e $_SESSION = $your_array;
PHP-tata pod 4.1.0 session_* funkciite. Imaj v predvid che nastroenieto e kum pulno izpolzvane samo na $_SESSION masiva i session_* funkciite v budeshteto mogem da gi vidim deprecate-nati. Kato polzvash vsichki sesiini promenlivi prez $_SESSION is garantirash pone v tazi si chast che kodut ti shte raboti pri register_globals Off. Vnimanie : ot versia 4.2.3 vkliuchtelno ne triabva da se smesva izpolzvaneto na session_* funkciite i chetene ot globals sus rabotata s $_SESSION i v versii predi 4.1.0 $HTTP_SESSION_VARS (to tova e referencia kum $_SESSION). Taka che ako polzvash funckiite predlagam ti da minesh na $_SESSION. Vednug zapazeni danni v nego mislia che sessiata avtomatichno se startira kato svurshi scripta i promenlivite se zapazvat.
Andrey
Re: Масиви в SESSION
Здрасти
$_SESSION съществува само в текущата страница! Когато натисна линк на следващата страница в $_SESSION няма никаква стойност, дори когато има в началото session_start. Какво трябва да се направи за ги има тези стойностти(или как се извличат ако те съществуват още). В директорията /TMP гледам за сесиите. Отварям ги с редактор, но има само името на променливата записана в session_register.
При случая за тази програма нямам session_register, a $_SESSION = $masiva и тогава пък абсолютно никаква стойност не се записва.
$_SESSION съществува само в текущата страница! Когато натисна линк на следващата страница в $_SESSION няма никаква стойност, дори когато има в началото session_start. Какво трябва да се направи за ги има тези стойностти(или как се извличат ако те съществуват още). В директорията /TMP гледам за сесиите. Отварям ги с редактор, но има само името на променливата записана в session_register.
При случая за тази програма нямам session_register, a $_SESSION = $masiva и тогава пък абсолютно никаква стойност не се записва.
Re: Масиви в SESSION
Znachi greshkata e moia :
<?php
session_start();
if (!isset($_SESSION['cnt'])) {
$_SESSION['cnt'] = 0;
$_SESSION['array'] = array();
}
var_dump($_SESSION);
echo ++$_SESSION['cnt'];
echo $_SESSION['array'][] = $_SESSION['cnt']-1;
?>
Triabva da ima session_start(), no ne e nugno da polzvash session_register(), slogish li neshto v $_SESSION i to se dobavia kum sesiite.
<?php
session_start();
if (!isset($_SESSION['cnt'])) {
$_SESSION['cnt'] = 0;
$_SESSION['array'] = array();
}
var_dump($_SESSION);
echo ++$_SESSION['cnt'];
echo $_SESSION['array'][] = $_SESSION['cnt']-1;
?>
Triabva da ima session_start(), no ne e nugno da polzvash session_register(), slogish li neshto v $_SESSION i to se dobavia kum sesiite.
Re: Масиви в SESSION
Mislq che govorite za razlichni neshta.
1) Obiknoweno za da ti se startira sushtata sessiiq na sledwashtata stranica trqbwda da si predadesh sessiniq nomer kato parametyr na tazi stranica. Towastawa ei taka <a href="asdfa.php?<?php echo session_name().'='.session_id()?>">. Taka w url-to shte si se pliosne dwoikata session_name=session_id i na sledwashtata stranica shte si q imash sessiqta
2) Za masiva w sesiqta - shto ne polzwash serializaciq.Serializirash masiva i go pliqkash w sesiqta w binaren format, posle si go deserializirash. Towa deto priswoqwash na sesiqta nqkakuw masiv mi se struwa neshto haltawa rabota
1) Obiknoweno za da ti se startira sushtata sessiiq na sledwashtata stranica trqbwda da si predadesh sessiniq nomer kato parametyr na tazi stranica. Towastawa ei taka <a href="asdfa.php?<?php echo session_name().'='.session_id()?>">. Taka w url-to shte si se pliosne dwoikata session_name=session_id i na sledwashtata stranica shte si q imash sessiqta
2) Za masiva w sesiqta - shto ne polzwash serializaciq.Serializirash masiva i go pliqkash w sesiqta w binaren format, posle si go deserializirash. Towa deto priswoqwash na sesiqta nqkakuw masiv mi se struwa neshto haltawa rabota
Re: Масиви в SESSION
I kak stawa tazi serilizacia na masiwa?
Това което искам е като подам един формуляр данните да се зпазват в сесията. С линк да се покаже друг формуляр с и от него да запазвам някакви данни до подаването им на всички данни до e-mail.
Това което искам е като подам един формуляр данните да се зпазват в сесията. С линк да се покаже друг формуляр с и от него да запазвам някакви данни до подаването им на всички данни до e-mail.
Re: Масиви в SESSION
Tova koeto predlagash e nugno samo ako sa zabraneni kukitata. Inache session_id-to otiva v kuki i vsichko e prozrachno. Dori i da sa zabraneni kukitata pak moge da se kage na php-to samo da rewrite-va i da dobavia SID-a i programista da ne se grigi za tova.
Otnosno predlogenieto za masiva v sesiata. Primera kojto sum dal raboti i ako go priobvash shte vidish che masiva si vliza i izliza suvsem dobre ot sesiata. Ludost e da se serializira masiva, t.e. da se vurshi dvojna rabota, taka ili inache toj se serializira kato se vkarva vuv file-a sus sesiata. Kakto obiasnih , v sesia dori i obekti mogat da se puhat.
Taka che "pl" : praqvish si session_start() v nachaloto na vseki file i rabotish masiva $_SESSION. kakvoto vkarash tam na sledvashtiat reload shte go imash tam. Ako shte da e obekt, masiv, string, chislo. Samo rekursivni strukturi ne moge, no ti edva li niakoga shte se opitash da pravish neshto takova.
I za nakraia hich ne e haltava rabotata. Za sugalenie tozi nachin za rabota ne e opisan v dokumentaciata zashtoto Lerdorf i Zmievski ne sa namerili vreme da ia update-nat.
Andrey
Otnosno predlogenieto za masiva v sesiata. Primera kojto sum dal raboti i ako go priobvash shte vidish che masiva si vliza i izliza suvsem dobre ot sesiata. Ludost e da se serializira masiva, t.e. da se vurshi dvojna rabota, taka ili inache toj se serializira kato se vkarva vuv file-a sus sesiata. Kakto obiasnih , v sesia dori i obekti mogat da se puhat.
Taka che "pl" : praqvish si session_start() v nachaloto na vseki file i rabotish masiva $_SESSION. kakvoto vkarash tam na sledvashtiat reload shte go imash tam. Ako shte da e obekt, masiv, string, chislo. Samo rekursivni strukturi ne moge, no ti edva li niakoga shte se opitash da pravish neshto takova.
I za nakraia hich ne e haltava rabotata. Za sugalenie tozi nachin za rabota ne e opisan v dokumentaciata zashtoto Lerdorf i Zmievski ne sa namerili vreme da ia update-nat.
Andrey
Re: Масиви в SESSION
<?php
session_start();
if (!isset($_SESSION['cnt'])) {
$_SESSION['cnt'] = 2;
$_SESSION['array'] = array();
}
var_dump($_SESSION);
echo ++$_SESSION['cnt'];
echo $_SESSION['array'][] = $_SESSION['cnt']+5;
echo "
<a href='link.php'>Link</a>
";
var_dump($_SESSION);
?>
При link.php липсват данните на сесиите??? Пропускам ли нещо да напиша?
$_SESSION само в рамките на текущата стр. ли съществува?
link.php
<?php
session_start();
var_dump($_SESSION);
echo $_SESSION['cnt'];
echo $_SESSION['array'][] = $_SESSION['cnt'];
?>
session_start();
if (!isset($_SESSION['cnt'])) {
$_SESSION['cnt'] = 2;
$_SESSION['array'] = array();
}
var_dump($_SESSION);
echo ++$_SESSION['cnt'];
echo $_SESSION['array'][] = $_SESSION['cnt']+5;
echo "
<a href='link.php'>Link</a>
";
var_dump($_SESSION);
?>
При link.php липсват данните на сесиите??? Пропускам ли нещо да напиша?
$_SESSION само в рамките на текущата стр. ли съществува?
link.php
<?php
session_start();
var_dump($_SESSION);
echo $_SESSION['cnt'];
echo $_SESSION['array'][] = $_SESSION['cnt'];
?>
Re: Масиви в SESSION
Tvoiat kod raboti pri men i vsichko si vliza v sesiata. $_SESSION ti e hranilishteto na vsichki promenlivi koito sa registrirani v sesiata i vmesto da pravish $some_sess_var pravish $_SESSION["some_sess_var"], oshte poveche ako register_globals ti e off drugo ne stava. Versiata na php-to mi obache e 4.3.0-dev, a v momenta niamam vuzmognost da testvam s 4.1.x ili 4.2.x . $_SESSION se poiavi v 4.1.0
Andrey
Andrey
Re: Масиви в SESSION
[no properties na obektite mogat da se izpozlvat dori i bez da si include-nal file-a s definiciata na class-a. ]
:) и как става тази магия
Може би говориш за
include(imenaklas.php);
echo imenaklas::varnaklas;
Обръщане към променлива на клас без да си създал инстанция с
klas=new imenaklas;
ама чак пък без include...
_________________________________________
Мили деца, xxx.com не е сайта на "трите хикса".
:) и как става тази магия
Може би говориш за
include(imenaklas.php);
echo imenaklas::varnaklas;
Обръщане към променлива на клас без да си създал инстанция с
klas=new imenaklas;
ама чак пък без include...
_________________________________________
Мили деца, xxx.com не е сайта на "трите хикса".
Re: Масиви в SESSION
Здравейте отново
Проблема наистина е в РНР-то, което ползвах, а именно PHP 4.0.6 което имам от RedHat7.2
Сега си инсталирах RedHat8.0 и в него PHP-то е 4.2.2
Примера работи много добре при него.
Благодаря за помоща.
Проблема наистина е в РНР-то, което ползвах, а именно PHP 4.0.6 което имам от RedHat7.2
Сега си инсталирах RedHat8.0 и в него PHP-то е 4.2.2
Примера работи много добре при него.
Благодаря за помоща.