Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje w PHP4 a PHP5
Forum PHP.pl > Forum > PHP
Driver
Podaje przyklad banalnego skryptu (chodzi o same sesje pomijając bezpieczeństwo itd.)

  1. <?php
  2. $a = $_POST[&apos;haslo&apos;];
  3. $c = $_POST[&apos;login&apos;];
  4.  
  5. if (($c == &#092;"xxx\") && ($a == \"zzz\")) {
  6. $_SESSION[&apos;zalogowany&apos;] = &apos;tak&apos;;
  7. }
  8. else 
  9. $_SESSION[&apos;zalogowany&apos;] = &apos;nie&apos;;
  10. ?>


i drugi plik
  1. <?php
  2. if ($_SESSION[&apos;zalogowany&apos;] == &#092;"tak\") {
  3. //cos tam
  4. }
  5. else {
  6. //blad autoryzacji
  7. }
  8.  
  9. ?>


Po wpisaniu odpowiedniego loginu i hasla do sesji wrzucana jest zmienna zalogowany rowna 'tak'. Przekierowuje na inny plik i sprawdzam czy $_SESSION['zalogowany'] == "tak".
I tu pojawia sie problem - pod PHP4 chodzi bez problemu, pod PHP5 nie chodzi (wyswietla sie blok "blad autoryzacji").

Moze wiecie co zmienic zeby dzialalo pod PHP5 ?
bim2
Daj w drugim pliku print_r($_SESSION); i powiedz co sie pojawiło. Może coś się wkrada do sesji. :0
Driver
W pierwszym pliku wyswietla sie prawidlowa tablica
Array ( [zalogowany] => tak )

W drugim tablica jest pusta.

Szukalem w googlach i gdzies napotkalem watek o nazwach sesji w php5. Niestety nie wiem jak mam to zastosowac
ActivePlayer
problem na 90% lezy po stronie konfiguracji serwera z php5
bim2
Może zły folder tmp dla sesji i nie może jej zapisać?
Driver
Serwer raczej nie, zz tego wzgledu ze pisalem do admina nazwa.pl w tej sprawie (bo serwer mama na nazwie).
Odpisal:

Proszę sprawdzić PHP info sesionid jest inne dla php5 niż dla php4. Większość
zmian można dokonać za pomocą pliku .htaccess. Poniżej przesyłam link dotyczący
zmian pomiędzy wersją 4 a 5:
http://nazwa.pl/pomoc-niekompatybilnosci-m...HP5-i-PHP4.html

Pod podanym adresem nie ma nic na temat sesji. Na php.net tez nic nie znalazlem ...


Przed chwila zaobserwowalem jeszcze jedna rzecz - probowalem sie zalogowac.
Pierwsza proba - po zalogowaniu i przejsciu pomiedzy zakladkami na zalogowanej stronie wywalilo brak autoryzacji, tablica sesji jest pusta
Druga proba - wszystko poszlo ok - tzn dziala przechodzenie po zakladkach, sesja ma ustawione zalogowany=tak

Sprobowalem na drugim kompie. To samo, z tym ze udalo sie za 3 razem.

Po wylogowaniu i zalogowaniu za kazdym razem juz dziala....

Wydaje mi se to conajmniej dziwne....

Aha, nadmienie jeszcze ze wczoraj dodalem do pierwszego pliku zaraz po
session_start();

funkcje
session_register('zalogowany');
TroYan
mam identyczny problem. i nie potrafię go rozwiązać. oprócz tego że sesja gubi się zaraz po przejściu na inną podstronę wywala mi taki błąd: Warning:

session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /index.php:1) in /index.php on line 1

pierwsze dwie linijki kodu pliku index.php

  1.  
  2. ?>
Driver
Chyba sobie poradziłem (wygląda na to że działa ok). Wystarczy ręcznie do linków dodawać PHPSESSID (próbowałem automatycznie przez .htaccess ale też nie działało). SID też niestety nic nie wyświetla...
Postanowiłem więc "ręcznie" tworzyć w pliku z definicjami stałą SID do której przypisuję wartość "PHPSESSID=".session_id();
SIDa wrzucam do linków/zakładek. Na razie nie spotkałem się z problemem wylogowania....

session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /index.php:1) in /index.php on line 1

Co do tego, to problem polega na tym, że wysyłasz przed zainicjowaniem sesji do przeglądarki jakieś dane (nawet znacznik meta czy html). Session_start() musi być na samym początku kodu
TroYan
Cytat(Driver @ 4.09.2008, 09:35:36 ) *
Chyba sobie poradziłem (wygląda na to że działa ok). Wystarczy ręcznie do linków dodawać PHPSESSID (próbowałem automatycznie przez .htaccess ale też nie działało). SID też niestety nic nie wyświetla...
Postanowiłem więc "ręcznie" tworzyć w pliku z definicjami stałą SID do której przypisuję wartość "PHPSESSID=".session_id();
SIDa wrzucam do linków/zakładek. Na razie nie spotkałem się z problemem wylogowania....

session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /index.php:1) in /index.php on line 1

Co do tego, to problem polega na tym, że wysyłasz przed zainicjowaniem sesji do przeglądarki jakieś dane (nawet znacznik meta czy html). Session_start() musi być na samym początku kodu


jest. sam samiusienkim początku ;o
bim2
musi wskakiwać jakaś spacja czy coś. Nie ma bata.
Shili
Niech zgadnę - kodowanie pliku to utf8?

Jeśli tak zapoznaj się z pojęciem BOM.
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.