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


 Użytkownik
 Użytkownik
	



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

 Członek DUG
 Członek DUG
	

Nie znam takiego przypadku ale jeżeli nie robi przekierowanie to może sesja wygasa?
Offline



 Administrator
 Administrator
	



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


 Dzięcioł
 Dzięcioł
	



ob_start nie powoduje problemu tylko blad moze byc w czyms innym, wez wywal echo ""; albo header() i zobacz jaki blad masz.
Offline

 Użytkownik
 Użytkownik
	z tego co wiem to session_start(); powinno zawsze byc zaraz po <?
a przekierowanie zrobil bym w javie
Offline



 Administrator
 Administrator
	



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

 Użytkownik
 Użytkownik
	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



 Administrator
 Administrator
	



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

 Użytkownik
 Użytkownik
	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


 Dzięcioł
 Dzięcioł
	



@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



 Administrator
 Administrator
	



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