Масиви в SESSION

10 отговора 304 прегледа
#1

Масиви в SESSION

Мога ли да записвам МАСИВИ в session и съответно по какъв начин става това(за масивите!!!)? Как после мога да ги извлека? Броя на елементите в масива се определя по време на изпълнение на програмата.

Опитвам се да го направя, но нещо не се получава както трябва.

Отговор
в отговор на pl #2

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

Отговор
в отговор на Andrey #3

Re: Масиви в SESSION

Здрасти

$_SESSION съществува само в текущата страница! Когато натисна линк на следващата страница в $_SESSION няма никаква стойност, дори когато има в началото session_start. Какво трябва да се направи за ги има тези стойностти(или как се извличат ако те съществуват още). В директорията /TMP гледам за сесиите. Отварям ги с редактор, но има само името на променливата записана в session_register.

При случая за тази програма нямам session_register, a $_SESSION = $masiva и тогава пък абсолютно никаква стойност не се записва.

Отговор
в отговор на pl #4

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.

Отговор
в отговор на Andrey #5

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

Отговор
в отговор на Pavel #6

Re: Масиви в SESSION

I kak stawa tazi serilizacia na masiwa?

Това което искам е като подам един формуляр данните да се зпазват в сесията. С линк да се покаже друг формуляр с и от него да запазвам някакви данни до подаването им на всички данни до e-mail.

Отговор
в отговор на Pavel #7

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

Отговор
в отговор на Andrey #8

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'];
?>

Отговор
в отговор на pl #9

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 #10

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 не е сайта на "трите хикса".
Отговор
в отговор на нeщacтeн #11

Re: Масиви в SESSION

Здравейте отново

Проблема наистина е в РНР-то, което ползвах, а именно PHP 4.0.6 което имам от RedHat7.2
Сега си инсталирах RedHat8.0 и в него PHP-то е 4.2.2
Примера работи много добре при него.

Благодаря за помоща.

Отговор