Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwne problemy z sesjami
Forum PHP.pl > Forum > PHP
molek1
Witam.
Od kilku dni staram się dojść do tego czemu sesje mi działają na jednych komputerach, a na innych nie. Zrobiłem sobie małą namiastkę CMS'a, w którym wybrany język (jeden z czterech) pamiętany jest w zmiennej sesyjnej.
Skrypt działał gdy miałem go na hostingu netart. Po przeniesieniu go na home.pl nie działały sesje, ale tylko gdy skrypt był uruchamiany z poziomu Firefoxa. Po różnych kombinacjach stanęło na tym że zadziałało.
Zacząłem tworzyć panel administracyjny, na potrzeby którego przygotowałem prostą autoryzację i niestety, od ponad tygodnia nie mogę zrozumieć czemu to nie działa na nie niektórych komputerach/przeglądarkach. Na potrzeby testu przygotowałem trzy skrypty które również działają w kratkę! Oto one:
plik html

  1. <form method='POST' action='logowanie.php'>
  2. <b>nazwa uzytkownika:</b> <input type='text' name='login'><br>
  3. <b>haslo:</b> <input type='password' name='haslo'><br>
  4. <input type='submit' value='Wyślij' name='wyslij'>
  5. </form>


następnie logowanie.php

  1. <?php
  2. $_SESSION[login]=$_POST[login];
  3. $_SESSION[haslo]=$_POST[haslo];
  4. header ('Location: l2.php');
  5. ?>


i ostatni plik wyświetlający zmienną sesyjną:
  1. <?php session_start();?>
  2. <pre>
  3. <?php print_r($_SESSION); ?>
  4. </pre>


Wszystko wydaje się banalnie proste, ale nie działa

Sprawdziłem to dzisiaj na Firefoxie i chrome pod Windows 7, i działało prawidłowo
Niestety na innej siódemce (64 bit) nie działa pod żadną z wymienionych wyżej przeglądarek, ale działało pod IE.
Nie mam już do tego siły i nie potrafię znaleźć rozsądnego wyjaśnienia...
Kshyhoo
"Sesje nie działają", to za mało. Jakie objawy? Komunikaty? No i jak wykorzystujesz sesje?

Sesje wyświetl sobie tak:
  1. print('<pre>SESSION: ');
  2. print_r ($_SESSION);
  3. print('</pre>');
no_face
Ja widze zastosowanie jakis stalych w kodzie:

  1. $_SESSION[login]=$_POST[login];
  2. $_SESSION[haslo]=$_POST[haslo];


wydaje mi sie, ze chodzi jednak o zmienne smile.gif w sensie tekstowe offsety, czyli

  1. $_SESSION['login']=$_POST['login'];
  2. $_SESSION['haslo']=$_POST['haslo'];


taka drobna poprawka, ktora powinna zazegnac problem.
molek1
Cytat(Kshyhoo @ 11.09.2012, 21:25:36 ) *
"Sesje nie działają", to za mało. Jakie objawy? Komunikaty? No i jak wykorzystujesz sesje?

Pisząc że sesja nie działa, miałem na myśli że zmienna sesyjna nie trzyma danych - zamieściłem próbne skrypty by nie było wątpliwości że wiem jak wyświetlić wyszstko co przechowywane jest w $_SESSION. Dodam tylko że nie ma żadnych komunikatów.

Cytat(no_face @ 11.09.2012, 21:28:19 ) *
Ja widze zastosowanie jakis stalych w kodzie:

  1. $_SESSION[login]=$_POST[login];
  2. $_SESSION[haslo]=$_POST[haslo];


wydaje mi sie, ze chodzi jednak o zmienne smile.gif w sensie tekstowe offsety, czyli

  1. $_SESSION['login']=$_POST['login'];
  2. $_SESSION['haslo']=$_POST['haslo'];


taka drobna poprawka, ktora powinna zazegnac problem.


Niestety, nie pomogło - co prawda pod chrome zadziałąło, ale nie wiem czy to nie zbieg okoliczności, gdyż pod firefoxem działa na jednym z czterech komputerów. Nie działa wogóle pod androidem (przeglądarka domyślna + firefox).
viking
Jaki czas życia sesji, w jaki sposób tworzone cookie? Po co trzymasz hasło w sesji?
molek1
Cytat(viking @ 12.09.2012, 09:39:01 ) *
Jaki czas życia sesji, w jaki sposób tworzone cookie? Po co trzymasz hasło w sesji?

Czsu życia sessji nie ustawiałem, tak samo jak cookie - jest tylko to co w skryptach podanych wyżej.
Co do hasła w sesji - otrzywiście nie trzymam go tam, jedynie nazwę usera. W w/w skryptach hasło pojawia się tylk dlatego że są one stworzone do testów i namierzenia problemu, jest to po prostu jakaś wawrość wpisana do zmiennej sesyjnej i tyl.
Być może powinienem stworzyć całe środowisko (czas sesji, cookie itp.), ale czy jest to niezbędne by mieć pewność że zadzaiła na każdym komputerze?
viking
Musisz mieć jakieś podstawy do sprawdzenia. Pierwszym i oczywistym jest przyjrzenie się samemu cookie w przeglądarce. Drugim to włączenie wszystkich błędów i sprawdzenie czy np nie wyświetla się komunikat o wcześniej wysłanych nagłówkach. Może być też różny czas serwera od klienta co przy typowym cookie oczywiście już na wstępie spowoduje przeterminowanie.
molek1
Jestem zdziwiony, ale zaczeło działać... mam co prawda spore obawy że może to nie być trwały efekt, ale puki co odpuszczam temat.
Dziękuję wszystkim za zaangarzowanie.
modern-web
Na Boga! Sesje przechowywane są na serwerze w katalogu tmp jeżeli nie ustawiłeś innego na stałe w pliku konfiguracyjnym php lub tymczasowo w głównym pliku aplikacji. Nie rozumiem po co poruszasz tutaj temat kompatybilności z różnymi `komputerami`. Zacznijmy od tego, że aplikacje napisane w PHP są tzw. server-side - ruszą bez specjalnych emulatorów jedynie na 2 systemach -> Unixach i Windowsach, a system z jakiego korzysta użytkownik nie ma znaczenia (chyba, że wprowadziłeś pewne ograniczenia na podstawie nagłówków HTTP). Różnice między systemami z punktu widzenia PHP są niewielkie - zróżnicowany zapas bibliotek (niektóre trzeba doinstalować) oraz inny sposób zapisu ścieżki do pliku. Rozumiem, że przykład, który tutaj zaprezentowałeś dotyczy logowania, a ja mogę Ci zagwarantować, że taki system uwierzytelniania (PHP) ruszy u każdego odwiedzającego, chyba, że pokombinujesz coś w warstwie prezentacji danych (HTML), a okaże się, że nie wszystkie przeglądarki wspierają daną technologię (mam tutaj na myśli jakieś Twoje urozmaicenia dla panelu).

P.S.
Jak teraz Ci to działa to jakim prawem ma przestać działać jeśli Ty niczego w niej nie zmienisz? Wbrew prawom informatyki smile.gif Nic nie dzieje się bez przyczyny.

Pozdrawiam.
molek1
Cytat(modern-web @ 13.09.2012, 14:41:56 ) *
Na Boga! Sesje przechowywane są na serwerze w katalogu tmp

Wiem to - w katalogu sesje się tworzą, ale nie zmienia to faktu że pod jednymi przeglądarkami funkcjonuje to prawidłowo, a pod innymi nie. Z nieznanych mi przyczyn zaczęło działać poprawnie... PHP co prawda działa na serwerze, ale nie zgodzę się z tym że przeglądarka jakiej się użyje nie ma wpływu na jego działanie - samo działanie sesji jet uzależnione od tego czy w przeglądarce działajuą cookie czy też nie.

Cytat(modern-web @ 13.09.2012, 14:41:56 ) *
Jak teraz Ci to działa to jakim prawem ma przestać działać jeśli Ty niczego w niej nie zmienisz? Wbrew prawom informatyki smile.gif Nic nie dzieje się bez przyczyny.

Kilkanaście lat temu, będąc na studiach pisałem w fortranie, c, pascalu itp. Zdażało się że coś co powinno działać, nie chciało ruszyć - kompilator fiksował... ten sam program kompilowany następnego dnia po prostu zadziałał, więc proszę Cię nie pisz że jak działa to nie przestanie.
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.