Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z cookies
Forum PHP.pl > Forum > PHP
soska66
Witam

Struktura systemu, z ktorym mam problem wyglada tak

index.php

  1. <?php
  2. include "initialize.php"
  3. if ($session_id) {
  4. $orderMasterId = generateOrder($session_id);
  5. $orderMaster = new OrderMaster($orderMasterId);
  6. }
  7. ?>


Dalej nastepuje switch, ktory odpala funkcje lub includuje plik zaleznie od parametru 'action' w url... od tego momentu kod nie jest istotny.
Zawartosc initialize.php to

  1. <?php
  2. $session_id = $_COOKIE["session_id"];
  3.  
  4. if (!$session_id ) {
  5. $session_id = getRandomString(32);
  6. setcookie("session_id", $session_id, 0);
  7. }
  8. ?>

gdzie getRandomString generuje po prostu ciag znakow, ktory jest identyfikatorem sesji

Wiec, przy kazdym odswiezeniu strony, system 'przechodzi' przez index.php. Sprawdzany jest identyfikator sesji. Jesli go nie ma (np strona zostala odpalona pierwszy raz po otworzeniu okna przegladarki) tworzy nowy id. Jesli ten id juz istnieje, to nie tworzy nowego i bazuje na istniejacym - tworzy klase orderMaster optrzebna potem do dzialania sklepu (koszyk itp.)

Problem polega na tym, ze czasem po wyczyszczeniu cache i cookies (a w IE temp int files i cookies) lub po zamknieciu i otworzeniu nowego okna przegladarki, ten indetyfikator sesji wariuje i przy kazdym odswiezeniu zmienia sie na nowy, albo (co dziwniejsze) nastepuje rotacja istniejacych id (np przechodze do strony 1, mam id XXX. Strona 2 - id YYY. Strona 3 - id CCC. Powrot do strony 1 - id znow XXX). Nie moge sobie z tym poradzic bo nie mam pojecia w czym tkwi problem.

Dodam, ze na poczatku sesje byly tworzone z czasem 'nieskonczonym'. Teraz zmienilem na 'do zamkniecia przegladarki'. Prosze o pomoc bo nie mam zielonego pojecia gdzie moze tkwic blad

Nikt nie jest w stanie nawet teoretycznych mysli zaprezentowac ? smile.gif
Po wczorajszym wieczorze z tym problem juz calkowicie jestem pozabawiony jakichkolwiek pomyslow. Jesli podalem za malo informacji, to chetnie dam wiecej... napiszcie co wam potrzeba
b_chmura
EDYTOWANO

Plik initialize.php
  1. <?php
  2. if(empty($_SESSION['session_id']))
  3. {
  4. $_SESSION['session_id'] = getRandomString(32);
  5. }
  6. ?>


Plik index.php
  1. <?php
  2. include('initialize.php');
  3.  
  4. if(!empty($_SESSION['session_id']))
  5. {
  6. $orderMasterId = generateOrder($_SESSION['session_id']);
  7. $orderMaster = new OrderMaster($orderMasterId);
  8. }
  9. ?>


na samym początku strony dodać
  1. <?php session_start(); ?>
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.