Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sesje (znowu :P) - blad?
kicaj
post
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


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:)


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
MStaniszczak
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
donpablo
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 28.02.2005

Ostrzeżenie: (0%)
-----


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";
Go to the top of the page
+Quote Post
MStaniszczak
post
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

Ostrzeżenie: (0%)
-----


Witam

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

Pozdrawiam
Marcin Staniszczak
Go to the top of the page
+Quote Post
Vengeance
post
Post #5





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Może też to być wynik przekazywania gdzieś tej zmiennej przez referencje :]


--------------------
Go to the top of the page
+Quote Post
kicaj
post
Post #6





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


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:)


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
MStaniszczak
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

Ostrzeżenie: (0%)
-----


Ja podtrzymuje swoje:-p Dopisz do .htaccess:
Kod
php_value register_globals off


Pozdrawiam
Marcin Staniszczak
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:42