Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP, szybkosc dzialania serwera i sesja...
Forum PHP.pl > Forum > Przedszkole
Vinnie
Mam takie pytanie - może ktoś obeznany z zasadami działania php zna odpowiedź.

Napisałem sobie skrypt do logowania - jeżeli login i hasło było dobre wrzucał co trzeba do sesji, przeładowywał jeszcze raz ekran i wszystko było gut.

Po jakimś czasie nastąpiła konieczność zmiany serwera - na szybszy, lepszy i wogóle. I tu nastąpił problem - logowanie czasem działało, czasem nie. Totalny random - czasem 5 razy pod rząd nie łapał, a łapał za 6-tym. Czasem logował bez problemu kilka razy po sobie - żadnej reguły.

Zacząłem wypisywać komunikaty do debugowania - okazało się, że po podaniu hasła zapisywał co trzeba do sesji, ale jej zawartość znikała po przeładowaniu ekranu (to znaczy czasem znikała, czasem nie). Rozwiązanie wyszło metodą
prób i błędów - trzeba było o pół sekundy opóźnić proces przeładowania ekranu -
zawartość sesji na drugim ekranie istniała i nie było problemu.

I pytanie do kogoś kto zna wnętrze php-a - co się działo w procesie interpretacji kodu, że jeżeli za szybko przeładowywałem ekran gubiłem zawartość dopiero co zapisanej sesji?
scanner
Podaj odpowiednie fragmenty kodu. Wróżkami nie jesteśmy.
Podaj również wersje php i Apache na obu serwerach.

Obliguje Cię do tego punkt IV.2.d Regulaminu Forum.
Vinnie
Poprzednio - www.boo.pl
za phpinfo()

Server API Apache 2.0 Handler
php Version 4.3.10
Linux izyda 2.4.26 #5 SMP


Teraz - www.strefa.pl
phpinfo() jest zablokowane, a na stronie dogrzebałem się tylko do notki:

Przydatne informacje dotyczące skryptów php i CGI Na kontach STREFA.PL zainstalowany został skrypt php w wesji 4.2.2.
Serwer WWW działa w środowisku chroot, zaś pliki użytkowników tworzone są z atrybutami '700'. Zastosowane rozwiązanie pozwala na swobodny odczyt jak i zapis plików na serwerze.
Ze względów bezpieczeństwa zablokowane zostały niektóre funkcje systemowe, jak choćby POSIX_. Brak tej funkcji nie wpływa jednak na funkcjonalność samego parsera kodu php.

-----------------------------------------------------------

Kod nie jest jakiś wydumany:

if($act=="Login")
{
$res= *** wynik Selecta na bazie danych ***
$wart = mysql_fetch_row($res);
if ($wart=="") $errorR="1";
else
{

$HTTP_SESSION_VARS['zalogowany']=$wart[0];
$HTTP_SESSION_VARS['adresikony']=$wart[1];
.... i jescze pare takich linijek ...


}
}

*** Rozne inne funkcje, ktore sie nie wywoluja, bo sa na inne okazje ***

if($errorR=="")
{
?>
<script type='css/javascript'>
location.replace("index.php");
</script>
<?

}
else
{
....
}

-------------------------------------------------------------------------
Generalnie chodzilo o to,aby wrzucil wszystko do sesji i jezeli nie ma bledu przeniosl sie do indexa. tymczasem o ile tuz przed location.replace zawartosc sesji byla na miejscu, o tyle w index.php bylo juz czysto (czasem, bo czasem bylo wszystko ok. logowalem sie wielokrotnie w krotkim okresie czasu i nie wykrylem reguly). Pierwsze co zrobilem w trakcie debugowania to dodalem alert() przed location.replace i nagle wszystko zaczelo chodzic bezblednie. Gdy go usunalem skrypt znowu raz dzialal, raz nie. Potem w JS opoznilem przeladowanie używając setTimeout o pół sekundy i wszystkie problemy z czyszczeniem sesji zniknely.

W sumie chodzi, ale zapytałem z ciekawości czy może ktoś się z czymś takim spotkał. Na poprzednim serwerze - www.boo.pl - zjawisko nie występowalo.
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.