Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] powody nietrzymania sesji
Forum PHP.pl > Forum > PHP
siutek
witam,
mam problem z sesjami - dane nie są utrzymywane.
na poczatku indexa mam
  1. <? session_start(); ?>
(1 linijka)
nigdzie w kodzie nie mam zadnego <? unset($_SESSION); session_destroy(); ?>
wszystkie linki kieruja sie na strone index.php, a jednak dane w zmiennych sesyjnych nie są zapamietywane sad.gif

niestety kod strony jest zbyt obszerny by pokazac go w calosci, dlatego nie oczekuje konkretnego rozwiazania a jedynie sugestii co moze wplywac na taki stan.

sesja przyjmuje wartosc tylko 1 raz w momencie gdy przypisuje do niej zmienne, nastepne przeladowanie już wszystko gubi...

z ustawieniami serwera jest wszystko ok, gdyz sprawdzilem inna swoja strone ktora wykorzystuje sesje, i wszystko dziala jak nalezy.
erix
Za każdym razem masz ten sam identyfikator sesji?

  1. unset($_SESSION);

Tak nawiasem, nie wolno czegoś takiego robić; jest w manualu wyjaśnione, dlaczego.
siutek
Cytat(erix @ 13.01.2010, 23:08:05 ) *
Za każdym razem masz ten sam identyfikator sesji?

tak, sprawdzilem, przy kazdym przeladowaniu strony session_id() zwraca mi ten sam identyfikator


Cytat(erix @ 13.01.2010, 23:08:05 ) *
  1. unset($_SESSION);

Tak nawiasem, nie wolno czegoś takiego robić; jest w manualu wyjaśnione, dlaczego.


sprawdzilem w manualu, bede pamietal na przyszlosc winksmiley.jpg

ale ciekawe jest jeszcze to, że...
uruchomilem inna swoja strone na tym samym serwerze wykorzystującą sesje.
zatem print_r($_SESSION) na pierwszej, problematycznej stronie pokazał mi wszystkie zmienne sesyjne z tej drugiej, działającej. i przechodzenie miedzy podstronami nie powodowało ich usunięcia. usuwane są wszystkie zmienne sesyjne, ktore probuje przypisac na tej stronie, ktora stwarza problemy.

mam nadzieje ze nie zamotałem... sad.gif
=================================
kolejna ciekawostka którą własnie odkryłem:

ustawilem sobie w kodzie na sztywno
  1. $_SESSION["cos"]=lalala;

przeladowalem strone, po czym usunalem tą linijke. i o dziwo, kolejne przeladowania NIE USUWAJĄ tej zmiennej.

jak sie okazuje problematyczny moze byc ten zapis:
  1. if($_POST["productId"]>0){
  2. $_SESSION[$_POST["productId"]]=$_POST["ilosc"];
  3. }


gdzie:
  1. $_POST["productId"] => "id produktu przeslane z formularza";
  2. $_POST["ilosc"] => "liczba sztuk produktu, ktory chce zakupic"


docelowo chce otrzymac liste:
produkt=>ilość,
produkt=>ilość

itp itd..

=======================
kolejne odkrycie:

tak wygladaja pierwsze linijki pliku index.php
  1. <?
  2.  
  3.  
  4. print_r($_SESSION);
  5. echo "<br>";
  6. print_r($_POST);
  7. echo "<br>";
  8. print_r($_GET);


sprawdzam w ten sposob zawartosc wszystkich tablic,
print_r($_SESSION) zwraca mi dziwna wartość: Array ( [] => )

mozliwe ze takie cuś może miec wplyw na czyszczenie tej zmiennej z id produktu jako kluczem.
========================================
temat do zamknięcia, jednak manual to swietna sprawa!! pol dnia kopania w dokumentacji, i w koncu sie udalo tongue.gif
ku przestrodze dla innych:
pierwszy poziom tablicy $_SESSION NIE MOŻE ZAWIERAĆ KLUCZY NUMERYCZNYCH!!
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.