Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesje (znowu :P) - blad?
Forum PHP.pl > Forum > PHP
kicaj
Dwa dni meczylem sie dlaczego moja sesja ($_SESSION['user']) zmieniala wartosc bez mojej wiedzy. Nie wiem czy to jest normlane, czy poprostu blad w php:

$_SESSION['user'] = 2;
Plik na serwerze zawiera cos takiego:
Kod
user|s:1:"2";
(nazwa zmiennej|typ(string):ilosc_znakow(1):wartosc_zmiennej
Jest to dosc proste, zrozumiale i poprawne.

ALE:
W kodzie mialem taki fragment:
$user = 10;
Moim skromnym zdaniem nie powinno miec to w ogole wplywu na zmienna sesyjna, ale tak sie wlasnie stalo, ze moja $_SESSION['user'] przyjela wartosc 10!!!
Na dodatek plik na serwerze mial niepoprawna skladnie (mniejwiecej):
Kod
user|1:10

Poprawnie powinno byc:
Kod
user|s:2:"10"


Sesja nadal dzialala!

Czy to jest blad w php? Czy moj?

Troszku namacilem, ale mysle ze zrozumiale jest to:)
MStaniszczak
Witam

Może wina leży po stronie register_globals?
A może już za późno i myślenie mi się wyłączyło;-)

Pozdrawiam
Marcin Staniszczak
donpablo
jeśli kontynuujesz sesje na danej stronie i zmiene nazywa się np. user, to zapis:
$_SESSION["user"] = 10 jest równoważny zapisowi $user = 10. To tak samo jak przy rejestrowaniu zmiennej sesyjnej. Jeśli koniecznie chcesz stosować zmienną o takiej samej nazwie to uzyj funkcji (przkazując zmienną przez wartość). A jeśli chodzi o typ zapisywanej wartości pod zmienną sesyjną to wpisując pod zmienną liczbę, powinien być typ integer czyli user|i:10, zatem zapis w zmiennej sesyjnej jest jak najbardziej prawidłowy, a string tylko w wypadku zapisu $user = "10";
MStaniszczak
Witam

A ja radzę wyłączyć register_globals i pewnie będzie ok;-p

Pozdrawiam
Marcin Staniszczak
Vengeance
Może też to być wynik przekazywania gdzieś tej zmiennej przez referencje :]
kicaj
Cytat(Vengeance @ 2005-03-05 13:59:40)
Może też to być wynik przekazywania gdzieś tej zmiennej przez referencje :]

Referencje odpadaja...

donpablo: wyjasnil to jak prawidlowo, nie pomyslalem ze samo `i` moze przeciez oznaczac `integer`, ale bardzo mnie zdziwilo ze $user i $_SESSION['user'] moze byc w niektorych przypadkach tym samym:)
MStaniszczak
Ja podtrzymuje swoje:-p Dopisz do .htaccess:
Kod
php_value register_globals off


Pozdrawiam
Marcin Staniszczak
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.