Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znikające zmienne w sesji... help...
Forum PHP.pl > Forum > Gotowe rozwiązania
Citral
Poniżej znajduję się skrypt który nie działa do końca poprawnie ponieważ sesja gubi zmienną... nie mam pojęcia o co chodzi.. No więc sprawa wygląda tak. Strona z tym skryptem nazywa się koszyk.php i użytkownik odwołuje się do niej przez np. ...koszyk.php?id=5 gdzie id jest identyfikatorem produktu, no ale to niewazne... no i teraz tak:
[php:1:18fd865ab3]
<?php
session_start();

if( !isset( $_SESSION['licznik'] ) )
$_SESSION['licznik'] = 1; //dziala ok

if( !isset( $_SESSION['zamowienie'] ) )
$_SESSION['zamowienie'] = ''; //dziala ok

$id_prod = $_GET["id"]; //tutaj przejmuje kod produktu dzila ok

$licznik = $_SESSION['licznik']; //dziala ok

$zamowienie = $_SESSION['zamowienie']; // ok

*********

if($id_prod) //tutaj patrze czy id istnieje, to dziala i program wchodzi do warunku
{
print "Kliknales produkt $licznik nr $id_prod"; //to taki tymczasowy dodatek kontrolujacy - dziala

$zamowienie.=$id_prod.'|'; //tutaj doklejam sobie id posczegolnych produktow -- dziala

$_SESSION['zamowienie'] = $zamowienie; //+++++++++++
$_SESSION['licznik']++;
}
else
{
echo "nic";
print " Zamowienie:$zamowienie"; //to zamowienie jest puste mimo ze pobieram jego wartosc z sesji jeszcze przed warunkiem...
}

?>[/php:1:18fd865ab3]


No i problem polega na tym ze dopoki wchodze przez koszyk.php?id=cos tam to wszysstko dziala bez najmniejszego problemu i produkty sie dodaja, licznik sie zwieksza a do zmiennej zamowienie doklejaja sie kolejne id produktow... jednak jesli wchodze na strone poprzez ...koszyk.php czyli nie podaje zadnego id to nie moge wyswietlic dotychczasowej zawartosci "zamowienie" bo jej po porstu nie ma... znika...

Wygląda to tak:
klikam notebooki, wywala mi notebooki, wybieram jeden z nich i dodaje go do koszyka, laduje sie strona koszyka z tym notebookiem, klikam potem np. twarde dyski, wybieram sobie hadeka, dodaje go do koszyka wiec znowu przenosi mnie na strone koszyka i jest wszystko ok, dwa produkty, klikam na pamieci wybieram sobie pamiec, dodaje do koszyka i wyswietla mi 3 produkty ... klikam na linka do strony koszyk.php i nic... znika wszystko... tzn. zmienne znikaja...

W tym przypadku wyswietla sie "nic" bo warunek braku id jest spelniony ale "zamowienie" jest puste ... jest tak obojetnie czy wchodze ze strony koszyk.php na koszyk.php czy z innej podstrony... na kazdej z nich jest start_session() ale to nic nie daje.. poki wchodze przez koszyk.php?id=x to jest ok, a jak wchodze przez koszyk.php to nic nie ma, licznik robi sie na 1 a zamowienie na ''... czyli tak jakby te zmienne wczesniej nie istnialy... tam gdzie wstawilem gwiazdki jesli wpisze print $zamowienie a wejscie bylo bez ?id=costam to tez zmienna jest pusta.. bezsenssu.. nie mam pojecia o co chodzi... bylbym bardzo wdzięczny za jakąś poradę... jak na moj gust to czy wchodze ze zmienna get czy bez zmiennej nie powinno miec zadnego wplywu.. questionmark.gif

P.S. skrypt dziala bez problemu kiedy wrzucilem go na serwer. w internecie, a po localhoście ni cholery... konfig php.ini sprawdzalem wszystko jest ok, session auto start tez nic nie daje, zreszta na kazdej stronie jest session_start() ... czy ktos kojarzy podobny problem?

I jeszcze jedno pytanie bo pierwszy raz posugługuję się sesjami przez $_SESSION... czy jeśli używam zarejstrowanej zmiennej to muszę ją aktualizować tak jak w linijce oznaczonej ++++++ czy wystarczy normalnie używać tej zmiennej jako $cośtam i sesja zapamieta wartość? Bo u mnie po localhoście jeśli jej tak nie zaktualizuję "$_SESSION["zamowienie"]=$zamowienie", to ineczej wartość nie przechodzi do sesji... być może przez net byłoby ok, skoro działa też to z czym mam problem... HELP
Seth
Wyedytuj swoj post zgodnie z tym http://php.pl/viewtopic.php?t=2810
Ive
Cytat
$_SESSION['zamowienie'] = '';
skoro żeś tu dał tylko'' to nie dziw się ze puste bo żeś nic nie wstawił do tej zmiennej sesyjnej ;] postaw np.
[php:1:b0d782cf2a]<?php
$_SESSION['zamowienie'] = 'coś tam';
?>[/php:1:b0d782cf2a]
i jush powinien coś zapisać do sesji ;]
Citral
Wiem, że nic nie wstawiam i tak ma być, chodzi o to, że to działa... $zamówienie potem przecież przyjmuje wartość $id które użytkownik kliknął i one są doklejane to tego zamówienia, więc przy ponownym wywołaniu skryptu $zamowienie ma wartość i warunek if !isset nie zostanie spełniony... problem w tym, że kiedy ponownie wywołam skrypt na localhoście bez podawania id to warunek braku id jest spełniony, wypisuje mi tekst NIC, który oznacza, że nie kliknąłem produktu, ale $zamowienie nie ma wartości, którą miało do tej pory... przez net działa na localhoście nie działa... w configu mam ustawione wszystkie pierdoły typu session auto start (i tak startuje sesje na kazdej stronir sam), session use cookie ale i tak nie działa... jakies sugestie? :]
Ive
[EDIT]
to co tu było wogóle nie rozwiązywało problemu więc usunąłem to żeby nie wprowadzić kogoś w błąd. Sorry
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-2024 Invision Power Services, Inc.