Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> echo SID;, Dlaczego tylko raz?
latet
post 4.10.2005, 23:05:28
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
piratt
post 5.10.2005, 00:02:00
Post #2





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


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ł
Go to the top of the page
+Quote Post
latet
post 5.10.2005, 22:01:13
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
sobstel
post 5.10.2005, 23:11:03
Post #4





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
latet
post 6.10.2005, 07:43:05
Post #5





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował latet 6.10.2005, 07:45:33
Go to the top of the page
+Quote Post
hwao
post 6.10.2005, 07:49:56
Post #6


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 00:31