Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z PHPSESSID
Forum PHP.pl > Forum > Przedszkole
termin
Witam, zrobilem sklep internetowy, cos podobnego jak os commerce czyli, jak ktos wejdzie na strone to po boku ma swoja zawartosc koszyka. Zrobilem tak ze jak ktos wrzuci cos do koszyka, a nie jest zalogowany to w polu bazy danych KLIENT wpisuje jego PHPSESSID. W momecie gdy chce zrobic zakupy musi sie zalogowac. Po udanej autoryzacji w polu klient PHPSESSID zamieniany jest na jego login. Problem polega na tym ze jak sie nie zaloguje, a wrzuci cos do koszyka i sie rozmysli zamykajac przegladarke to w bazie pozostaja smieci z nieaktualnym PHPSESSID. Nie wiem dlaczego ale jak po jakims czasie wejde na strone to widze ze w koszyku mam jakies rzeczy ktorych wczesniej nie wrzucalem do koszyka. Po odswiezeniu strony zawartosc koszyka jest pusta, wiec skad on to bierze. Za wyswietlanie zawartosci odpowiedzialny jest taki skrypt, mysle ze to on moze byc przyczyna:

  1. <?php
  2.  
  3. if ($_SESSION[&#092;"pologin\"]==1){ //sprawdzam czy jest zalogowany
  4. $idklient=$_SESSION[&#092;"login_user\"];
  5. } else {
  6. $idklient=$PHPSESSID;
  7. }
  8.  
  9. $sql=mysql_query(&#092;"SELECT koszyk.*, towary.nazwa_tow, towary.cena FROM koszyk, towary WHERE ko
    s
  10. yk.id_kod=towary.kod AND koszyk.klient='$idklient'\");
  11. $x=mysql_num_rows($sql);
  12. if ($x==0)
  13. {
  14. echo \"<class='trescC'>Twój koszyk jest pusty.</p>\";
  15. }
  16. else
  17. {
  18. // wysietlanie zawartosci koszyka
  19. }
  20.  
  21. ?>


czy ktos moze mi cos doradzic?
Ociu
  1. <?php
  2. function show_basket()
  3. {
  4. if (isSet($_SESSION[&#092;"pologin\"])){
  5. $id = $_SESSION[&#092;"login_user\"];
  6. } else {
  7. die(&#092;"Nie jesteś zalogowany\"); # jesli nie jest zalogowany, to po co pokazywac jego koszyk ?
  8. }
  9.  
  10. $sql=mysql_query(&#092;"SELECT koszyk.*, towary.nazwa_tow, towary.cena FROM koszyk, towary WHERE ko
    s
  11. yk.klient='\".$id.\"'\"); # poberz tylko towary o id = $id
  12.  
  13. $x=mysql_num_rows($sql);
  14.  
  15. if ($x==0)
  16. {
  17. echo \"<class='trescC'>Twój koszyk jest pusty.</p>\";
  18. }
  19. else
  20. {
  21. // wysietlanie zawartosci koszyka
  22. }
  23. }
  24. ?>
termin
No tak tylko w tym momencie, jak ktos wejdzie na strone (nie loguja sie) i wrzuci cos do koszyka, to zawsze bedzie on pusty.

Wydaje mi sie ze cos chyba zle dziala server WWW, bo przecież jak otwieram przegladarke i wchodze na strone to powinienem dostac nowy PHPSESSID i wtedy wybieram z bazy danych wszystkie towary gdzie klient=phpsessid. Teraz to działa tak jakbym dostał PHPSESSID uzytkownika ktory przede mna wrzucal cos do koszyka, bo widze jego towary w koszyku. Dziwne sad.gif
Ociu
No właśnie, trzeba by się najpierw zalogować, żeby coś wrzucić ? Tak ja przynajmniej myśle.

edit: a jeśli tak to daj swoje phpsessid:
  1. <?php
  2. md5(uniqe(time().$_SERVER['REMOTE_ADDR']));
  3. ?>
termin
Zauwazylem ze oscommerce przekazuje PHPSESSID za kazdym razem metoda GET, moze to i rozwiazanie, lecz musialbym wszedzie teraz w linkach podostawiac &SESID=$SESID
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.