Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: echo SID;
Forum PHP.pl > Forum > Przedszkole
latet
Witam,

Oswajam się z sesjami (pierwsze kroki), i mam takie coś:

  1. <?php
  2. if (!isset($_SESSION['count'])) $_SESSION['count'] = 0;
  3. else $_SESSION['count']++; 
  4.  
  5. echo '<br>Strona odczytana '. $_SESSION['count'] . ' razy w ciagu tej sesji<br>';
  6. echo 'SID = ' . SID;
  7. ?>


Wszystko niby działa. Liczniczek zwieksza się ślicznie po każdym odświeżeniu (za pierwszym razem pokazuje oczywiście 0).

Natomiast SID wyświetlany jest tylko za pierwszym razem (jako ciąg w rodzaju PHPSESSID=a01917bd6eff649te9371595ff803d43). Za każdym nastepnym odświeżeniem SID się już nie wyświetla (ciąg pusty, brak komunikatów o błędach).

Dlaczego tak się dzieje?
Domyślam się, że być może dlatego, że po odświeżeniu skrypt wykrywa obecność cookie przechowującego SID. No, ale dlaczego z tego powodu pod zmienną (tzn. stałą) SID podstawia ciąg pusty?

Dzięki,

latet
piratt
U mnie SID jest zawsze pusty i nigdy sie nie wyswietla o ile nie wylacze obslugi cookiesow. Wiec to jest chyba normalne zachowanie, propagowanie SIDa odbywa sie w pierwszej kolejnosci przez cookiesy a dopiero po niepowodzeniu przez adres.

Pozdrawiam
Michał
latet
Cytat(piratt @ 2005-10-04 23:02:00)
U mnie SID jest zawsze pusty i nigdy sie nie wyswietla o ile nie wylacze obslugi cookiesow. Wiec to jest chyba normalne zachowanie, propagowanie SIDa odbywa sie w pierwszej kolejnosci przez cookiesy a dopiero po niepowodzeniu przez adres.

Pozdrawiam
Michał

No wlasnie. Powinno być, tak jak piszesz. Ale kurcze u mnie tak nie jest (sprawdzone i na php4 i na php5). Za pierwszym odpaleniem skrytpu SID jest pełny. Więc linki z SID-em, za pierwszym razem, są wzbogacone o ten ciąg. A nie powinny, skoro cookies działają.
No i co mam z tym zrobić?

Dzięki,

latet
sobstel
Cytat(latet @ 2005-10-04 23:05:28)
Za każdym nastepnym odświeżeniem SID się już nie wyświetla (ciąg pusty, brak komunikatów o błędach). Dlaczego tak się dzieje?
Domyślam się, że być może dlatego, że po odświeżeniu skrypt wykrywa obecność cookie przechowującego SID. No, ale dlaczego z tego powodu pod zmienną (tzn. stałą) SID podstawia ciąg pusty?

może to pomoże (cytat z manuala) :

php może to robić 'przezroczyście' jeśli został skompilowany z opcją --enable-trans-sid. Jeśli włączysz tą opcję, względne URI zostaną automatycznie podmienione tak, aby zawierały identyfikator sesji. Możesz także użyć stałej SID która jest definiowana jeśli klient nie wysłał odpowiedniego ciastka. SID jest albo w postaci nazwa_sesji=id_sesji lub pustym stringiem.
latet
Potestowałem trochę i mam takie pytanie:

Wyłączyłem cookies w przeglądarce (FF). Zalogowałem się na to forum. W każdym linku pojawił się SID (choć wcale nie na końcu linka - widać, jest to obojętne).

Skopiowałem ten link i wkleiłem do IE. Otworzyło się forum, ale wcale nie byłem od razu zalogowany, a numer sesji w widocznych linkach się zmienił.

Dlaczego więc skopiowany w linku SID nie zrobił na serwerze żadnego wrażenia i forum założyło nową sesję, tak, jakby żadnego SID w linku nie było?

Rozumiem, że jest to jak najbardziej wskazane zabezpieczenie, więc... jak takie zrobić u siebie? Jak skrypt forum zorientował się, że coś się zmieniło? Czy moduł sterujący sesjami bada za każdym razem zgodność takich cech jak IP klienta, string user-agent?

A wracając do tego, że stała SID - zgodnie z manualem - nie jest pusta przy pierwszym uruchomieniu sesji (przed odświeżeniem)... To nadal nie kumam, jak jednocześnie zabezpieczyć dwie sprawy:
1) nie stracić sesji jesli nie ma cookies
2) nie "wzbogacać" linka SID-em, jeśli cookies są.
Przecież przed odświeżeniem lub przejściem na inną stronę, nie wiadomo czy cookies działają czy nie. Więc nie wiadomo czy trzeba dodawać SID do linka czy nie.
Pomijam tu automatyczne dodawanie SID do linków przez serwer, bo na żadnym serwerze, do którego mam dostęp to nie działa.

Dzięki,

latet
hwao
IPB jest ciut rozbudowane smile.gif zreszta kazdy wiekszy skryp powinien (ma) takie zabezpiecznie.

Mianowicie poza SID sprawdza jeszcze przegladarke ip itp (jak ktos poda linka znajomemu zeby nie weszedl na jego dane).
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.