logowanie...

Tutaj dyskutujemy o PHP oraz zgłaszamy i rozwiązujemy problemy dotyczące tego języka.
jawa
Bywalec
Bywalec
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

logowanie...

Post przez jawa »

Mozecie powiedziec mi co jest nie tak? zrobilem to najpierw z glowy..pozniej sprawdzilem w lekcji i nie mam pojecia.....moj kod to:

Code: Zaznacz cały

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
          <?php
                if ((isset($_POST['login'])&& isset ($_POST['password']))||$_SESSION['logged']=1)
                {
                if((!empty($_POST['login'])&& !empty($_POST['password']))||$_SESSION['logged']=1)
                {
                    if($_SESSION['logged']==0)
                    {
                        $login=  filter_var($_POST['login'],FILTER_SANITIZE_STRING);
                        $password= filter_var($_POST['password'],FILTER_SANITIZE_STRING);
                    }
                    if ($_SESSION['logged']==1 ||($login=='ralf' && $password=='1234'))..........tu jest 2x and.....nie wiem czmu wyskakuja na forum inne znaczki....
                    {
                        $_SESSION['logged']=1;
                        echo "jestes zalogowany";
                    }
                    else
                        echo "Niepoprawny login lub hasło";
                }
                else 
                    echo "Wpisz login lub hasło";
                }
                if($_SESSION['logged']==0)    
                {
                ?>
			<div id="form">
				<form action="index.html" method="post" >
					Login: <input type="text" name="login" maxlength="8" size="9"/>
					Hasło: <input type="password" name="password" maxlength="8" size="9"/>
					<input type="submit" value="zaloguj"/>
				</form>
			</div>
                    <?php
                }
                ?>
    </body>
</html>
wpisalem taki kod do NetBeans-a i jak chcialem sprawdzic to nawet mi nie wyskoczyl formularz zebym mogl wpisac poprawne haslo i login...tylko od razu "jestes zalogowany"....o co chodzi?

Używaj znaczników code.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: logowanie...

Post przez Morfidon »

Rozpocznij sesję. session_start.
jawa
Bywalec
Bywalec
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

Re: logowanie...

Post przez jawa »

rozpoczalem sesje na samym poczatku kodu....tak jak uczyles...nie pomoglo..
abuc
Początkujący
Początkujący
Posty: 9
Dołączył(a): poniedziałek, 14 maja 2012, 14:43

Re: logowanie...

Post przez abuc »

Faktycznie wyswietla od razu "jestes zalogowany"

ja dodalem do tego kodu cos takiego:

Code: Zaznacz cały


if(isset($_GET['page']) && $_GET['page'] == "wyloguj")
              {
                  $_SESSION['logged'] = 0;
                  session_destroy();
              }

ponadto jak już jesteś zalogowany to po prostu pod tym stwórz linka, który będzie zawierał $_GET.

Pozdrawiam.
jawa
Bywalec
Bywalec
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

Re: logowanie...

Post przez jawa »

przed sekunda znaazlem rowniez wyjscie z tej sytuacji. Powiedz mi Morfidon dlaczego tak jest ze to co pokazales w lekcjach u mnie nie dziala? chodzi oto ze we wszystkich powyzszych wrunkach dodawales :

Code: Zaznacz cały

|| $_SESSION['logged']==1 
Wlasnie to powodowalo ze od razu bylem zalogowany..usunalem to z kazdego warunku i dziala.....dodatkowo :

Code: Zaznacz cały

if($_SESSION['logged']==0)
               {    
                    $login=filter_var($_POST['login'],FILTER_SANITIZE_STRING);
                    $password=filter_var($_POST['password'],FILTER_SANITIZE_STRING);
               }
               if( $_POST['login']=='ralf' && $_POST['password']=='qqqq') 
               { 
                   $_SESSION['logged']=1;
                   echo "jestes zalogowany";
               }
W drugim warunku mialem ze jesli $login i $password sa rowne ralf i qqqq to zaloguje i nie chcial logowac...w dodatku wyrzucal blad Undefinied variable wiec zmienilem to na powyzsza postac i dziala wszystko poprawnie.....dlaczego tak jest ze tobie to dziala a mi nie??
jawa
Bywalec
Bywalec
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

Re: logowanie...

Post przez jawa »

Dzieki abuc za sugestie;-)
abuc
Początkujący
Początkujący
Posty: 9
Dołączył(a): poniedziałek, 14 maja 2012, 14:43

Re: logowanie...

Post przez abuc »

Sprawdzałem kod jeszcze raz i w sumie jeśli na początku otworzyłeś sesje tak jak było to pokazane w lekcji wszystko powinno być w porządku. Musisz przede wszystkim pamiętać o poniższym kodzie przy otwarciu sesji w przeciwnym wypadku wywala notatki od serwera:

Code: Zaznacz cały

$_SESSION['logged'] = 0;
Drugą rzeczą, októrej musisz pamiętać jest używanie(w tym wypadku), operatorów porównania zamiast operatorów przypisania czyli :

Zamiast tego:

Code: Zaznacz cały

if(($login == 'ralf' && $haslo == '1234') || $_SESSION['logged'] = 1)
użeywaj tego:

Code: Zaznacz cały

if(($login == 'ralf' && $haslo == '1234') || $_SESSION['logged'] == 1)
No i jeszcze jeśli już sesja została otwarta i nigdzie jej nie zamykasz to zawsze będziesz zalogowany do momentu wyłączenia przeglądarki lub też skorzystania z "Wyloguj" o ile taką opcję dodajesz.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: logowanie...

Post przez Morfidon »

Nie zauważyłem operatora przypisania, oczywiście to jest błąd. Notice to z ang. ostrzeżenie - to nie jest błąd. To miejsce w którym może ew. spowodować nieprawidłowe, nieprzewidziane działanie programu. Jest to ostrzeżenie dla programisty aby uważał, jeśli stosuje tego typu praktyki. W tym wypadku chodzi oto, że każdą zmienną teoretycznie przed porównaniem powinno się zainicjalizować jakąś domyślną wartością. PHP jednak tego nie wymaga, choć ostrzeże, że może być porównywana wartość "undefined". W naszym wypadku to nie przeszkadza.

jawa korzystaj ze znaczników code, gdy wklejasz kod źródłowy.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: logowanie...

Post przez tajger »

Logowanie lepiej robić pod SESJĘ czy COOKIES? Czy może oba aspekty łączyc, wiadomo, że cookies można wyłączyć.
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: logowanie...

Post przez Morfidon »

Lepiej sesją, można niektóre elementy połączyć. Najlepiej tak jak pokazałem w kursie.
Post Reply