Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] nadpisanie sesji ? token...
Forum PHP.pl > Forum > Przedszkole
bronx
witam

napisałem sobie taki skrypcik, który tworzy obrazek z wylosowanymi liczbami

  1. <?
  2. $image=ImageCreate(72,30);
  3. $czarny=ImageColorAllocate($image,255,255,255);
  4.  
  5. $bialy=ImageColorAllocate($image,0,0,0); //kolor czarny
  6.  
  7. $token = strtoupper(md5(uniqid(rand(), true)));
  8. $token = substr($token, 0, 4);
  9.  
  10. putenv('GDFONTPATH=' . realpath('.'));
  11. $font = 'tomv';
  12.  
  13. imagettftext($image, 15, 0, 7, 20, $bialy, $font, "$token");
  14.  
  15.  
  16. unset($_SESSION['token']);
  17.  
  18. $_SESSION['token'] = $token;
  19.  
  20. header("Content-type:image/jpeg");
  21. Imagejpeg($image);
  22.  
  23. ?>


no i chodzi o to, żę zmienna sesyjna "token" za kazym razem jest taka sama. Czyli jej nie nadpisuje za każym razem :/ Jak to roziwazać questionmark.gif
Cysiaczek
To co piszesz wydaje mi się wysoce podejrzane. U mnie jest dobrze, czyli zmienna sesyjna jest nadpisywana i za każdym razem jest inna.

Pozdrawiam.
bronx
Cytat(Cysiaczek @ 3.09.2006, 06:03:26 ) *
To co piszesz wydaje mi się wysoce podejrzane. U mnie jest dobrze, czyli zmienna sesyjna jest nadpisywana i za każdym razem jest inna.

Pozdrawiam.


no właśnie tak sięnie dzieję :/

tutaj można to zaobserwować

TEST

za każdym razem jak się odświeży stronę powinna być inna zmienna sesyjna a niestety - zmienia się tylko kod na obrazku a zmienna pozostaje ciągle ta sama :/
revyag
No dobra, ale podałeś kod który tworzy obrazek. Pokaż resztę.
bronx
Cytat(revyag @ 3.09.2006, 15:14:40 ) *
No dobra, ale podałeś kod który tworzy obrazek. Pokaż resztę.


a po co Ci reszta ? tam tworzy obrazek i zapisuje wylosowany ciąg do sesji. I według mnie za każdym razem gdy odświeże stronę powinno nadpisać daną zmienną sesyjną na nową - a niestety nie robi tego :/

  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. <title>Test</title>
  6. </head>
  7. <body><center>
  8. Obrazek z kodem:<br />
  9. <img src="token.php" alt="kod" border=1><br /><br />
  10. Dane zappisane do sesji:<br /><br />
  11. <?php
  12. echo $_SESSION['token'];
  13. ?>
  14. </center></body></html>


tutaj tylko tak na szybjo sprawdzam jak wygląda sesja. I jak widać sięnie zmienia :/ Tak jakby jej nie nadpisywało
Amorph
Witam.
Mam podobny problem, skrypt wygląda podobnie jednak mi po sprawdzeniu sesji zwraca zmienną z "poprzedniego razu" tzn. jak skrypt wylosuje aaa, po sprawdzeniu nie mam nic, f5, generuje np. bbb po sprawdzeniu mam aaa.
Gdzie może być błąd ?
bronx
Cytat(Amorph @ 4.09.2006, 14:25:33 ) *
Witam.
Mam podobny problem, skrypt wygląda podobnie jednak mi po sprawdzeniu sesji zwraca zmienną z "poprzedniego razu" tzn. jak skrypt wylosuje aaa, po sprawdzeniu nie mam nic, f5, generuje np. bbb po sprawdzeniu mam aaa.
Gdzie może być błąd ?


pewnie dlatego ze najpierw rozpoczynasz sesje (session_start()winksmiley.jpg potem gdzies losujesz i zapisujesz zmienna, ale ją pobierzesz dopiero po przejściu na kolejną podstroną (po ponownym rozpoczęciu sesji) - przynajmniej tak mi się wydaję smile.gif

a co do mojego problemu to dokopałem się do wiadomości iż na większości serwerów, gdzie jest skonfigurowane php, jedna ze zmiennych konfigurujących zachowanie się sesji jest ustawiona tak, że wartości sesji nie są przechowywane na serwerze tylko w ciasteczku przeglądarki użytkownika.
dlatego też może się zdarzyć, że zapisana wartość sesyjna dopiero po kolejnym odczytaniu strony jest brana pod uwagę.

Dlategorozwiazałem to w inny sposób - zapisuje sesje o wygenerowanej wcześniej nazwie a nie wartości - w tym wypadku nie nadpisuje żadnej zmiennej ale tworze nową...

pozdrawiam
ZaHoryzontem
U mnie ten problem też niestety występuje... skrypty mam rozwiązane tak:

Jeden skrypt zawiera formularz, który przekazuje zmienne do drugiego skryptu.

Drugi skrypt rejestruje zmienne w sesji, ale ma przycisk "wróć", który przekierowuje usera do poprzedniej strony.

No i problem w tym, że jeśli po powrocie do poprzedniej strony user zmieni jakąś wartość w formularzu, to po przejściu do drugiej strony mam starą wartość zmiennej...

Chyba nie ma sensu wklejać całych skryptów....

początek drugiego to:
  1. <?php
  2. session_start("test");
  3.  
  4. session_register("nazwisko");
  5. session_register("data_dzien");
  6. session_register("data_miesiac");
  7. session_register("data_rok");
  8. session_register("licencja");
  9. session_register("miasto");
  10. session_register("kod_pocztowy");
  11. session_register("telefon");
  12. session_register("e_mail");
  13. ?>


Noc przyniosła rozwiązanie...

Jełśi w skrypcie (np. formularzu) używa się tych samych nazw zmiennych co w swssji, to przy przejściu do nowej strony, "ma" ona wartości zmiennych z formularza - po czym wywołujemy session_start() - a ta funkcja odczytuje zmienne już w sesji zapisane i nadpisuje je na zmienne przekazane wcześniej.

Rozwiązaniem jest używanie 2 zestawów zmiennych - jeden wyłącznie na użytek sessji, drugi na którym operuje "reszta" skryptu i oczywiście odpowiednio przypisywać im wzajemnie wartości.
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.