Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam! mam skrypt logowania który działa prawie bez zarzutu! Na każdej podstronie mam skrypt który sprawdza było logowanie.
<?
ob_start();
session_start();
if($_SESSION['access'] != 'root'){
@header ("Location: index1.php");
echo "";
}
ob_end_flush();
?>
I w czym problem - wszystko fajnie sprawdza ale czasami po kliknięciu w jakąś stronę pokazuje mi się biały ekran zamiast docelowego.
Oczywiście daję w tym momencie odśwież i dopiero wskakuje. Dzieje się to sporadycznie rzadko ale się dzieje.
Zna ktoś może taki przypadek??
Offline
Nie znam takiego przypadku ale jeżeli nie robi przekierowanie to może sesja wygasa?
Offline
Pewnie biała strona jest wynikiem błędu. Pewnie standardowo masz je ukrywane, wiec zmień to i zobacz co wyrzuca. Nie wiem po co używasz ob w tym przypadku, wydaje się zbędne, może powoduje te problemy.
Offline
ob_start nie powoduje problemu tylko blad moze byc w czyms innym, wez wywal echo ""; albo header() i zobacz jaki blad masz.
Offline
z tego co wiem to session_start(); powinno zawsze byc zaraz po <?
a przekierowanie zrobil bym w javie
Offline
blinki napisał(-a):
z tego co wiem to session_start(); powinno zawsze byc zaraz po <?
a przekierowanie zrobil bym w javie
Koleś w jakiej javie? Java Script to nie Java!!!
Offline
kamikadze no wiadomo ze java script... (przepraszam :P) wiem tak samo linux!=unix
moge dac nawet dobra linijke :)
print "<script>setTimeout('document.location = \"index1.php\"', 1);</script>";
edit
lepiej starc sie jak naj mniej urzywac przekierowan za pomoca header bo czesto sa problemy, wiem bo sam mialem podobne problemy
a a co do wygasajacych sesji to mialem przypadki konfliktow np. jesli moja sesja nazywala sie tak $_SESSION['login']=1 i jak urzywalem zminnej $login=2
to sesja przyjmowala wartosc $_SESSION['login']=2 i przy urzyciu instrukcji warunkowej otrzymywalem "false"
Ostatnio edytowany przez blinki (2009-10-17 15:12:01)
Offline
blinki napisał(-a):
kamikadze no wiadomo ze java script... (przepraszam :P) wiem tak samo linux!=unix
moge dac nawet dobra linijke :)
print "<script>setTimeout('document.location = \"index1.php\"', 1);</script>";
edit
lepiej starc sie jak naj mniej urzywac przekierowan za pomoca header bo czesto sa problemy, wiem bo sam mialem podobne problemy
a a co do wygasajacych sesji to mialem przypadki konfliktow np. jesli moja sesja nazywala sie tak $_SESSION['login']=1 i jak urzywalem zminnej $login=2
to sesja przyjmowala wartosc $_SESSION['login']=2 i przy urzyciu instrukcji warunkowej otrzymywalem "false"
Ja bym jednak polecał header, nie wiem jakie można mieć z tym problemy. Mieszanie PHP z JS lepiej ograniczyć do minimum. Co do twoich "konfliktów" to tak. $_SESSION['login']=1 nie jest nazwą sesji jest to zmienna login w tablicy (asocjacyjnej) sesji, których możesz mieć wiele. Jeśli tą wartość nadpisywała zmienna $login to masz nieprawidłowo skonfigurowane PHP, zapewne włączone register globals (niezalecane). Zmienne globalne, które ssą nie powinny być używane (przykładem jest twój problem). Wyłącz to w swoim PHP, jeśli używasz nowych wersji PHP (co jest zalecane) powinno to wyłączone w konfiguracji. Zmienne globalne sprawiają wiele problemów jak takie nadpisywanie wartości jak w twoim przykładzie. Wszystkie zmienne przechowywane w globalnych tablicach asocjacyjnych stają się globalnymi mają nazwy jak klucze w tabeli. Powodując masę problemów i nieprzewidywalne działanie aplikacji. Zuo wcielone.
Offline
no to wtakim razie ostrzegam przed hostingiem linuxpl.com ^^ bo tam wytapil ten blad
a co do js+php raczej linijka przeladowujaca strone nie przeszkadza :) bo to jest jedyny fragment js w moich kodach :) bo generalnie nietrawie JS dlatego ze php skladniowo jest prostrze jak c++ krotkie funkcje a nie jak w JS czy Javie(nie to nie to samo :P) linia kodu na wydrukowanie na ekranie :P
Offline
@blinki, zeby cokolwiek powiedziec o czyms to chyba by pasowalo by to poznac, js ja uzywam i to w coraz wiekszym zakresie i jakos mi to nie przeszkadza.
wezmy np. AJAX, DOJO, jQUERY itp. to wszystko JS i w jakis sposob bardzo duzo serwisow uzywa to, i dzialaja poprawnie a tworcy nie podcinaja sobie zyl z tego powodu, ani uzytkownicy.
ale nie o to chodzi w tym temacie.
@debbie sprawdz najprostrza wersje logowania:
<?php session_start(); switch($_REQUEST['uri']){ case "zalogowany": if($_SESSION['login']==true){ echo "Jestes zalogowany"; }else{ $_SESSION['error'] = "Blad logowania"; header('location: ?'); } break; case "logowanie": $_SESSION['login']=true; header('location: ?uri=zalogowany'); break; default: //Formularz logowania echo "<hr />"; echo $_SESSION['error']; break; } ?>
PS: wywal @ przed header
Ostatnio edytowany przez jezoo (2009-10-19 18:32:43)
Offline
Dla blinki. Porównanie redirecta w PHP i JS. No i przykłądy jak to robić, bo używanie setTimeout w JS żeby przekierować strone to nie najelegantsze podejście.
http://www.satya-weblog.com/2009/10/php-redirect-vs … redirect.html
Offline
Strony: 1