Strona 1 z 2

logowanie...

Napisane: wtorek, 29 maja 2012, 20:57
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.

Re: logowanie...

Napisane: środa, 30 maja 2012, 09:36
przez Morfidon
Rozpocznij sesję. session_start.

Re: logowanie...

Napisane: czwartek, 31 maja 2012, 20:36
przez jawa
rozpoczalem sesje na samym poczatku kodu....tak jak uczyles...nie pomoglo..

Re: logowanie...

Napisane: czwartek, 31 maja 2012, 21:04
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.

Re: logowanie...

Napisane: czwartek, 31 maja 2012, 22:01
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??

Re: logowanie...

Napisane: czwartek, 31 maja 2012, 22:13
przez jawa
Dzieki abuc za sugestie;-)

Re: logowanie...

Napisane: czwartek, 31 maja 2012, 22:47
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.

Re: logowanie...

Napisane: czwartek, 31 maja 2012, 22:54
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.

Re: logowanie...

Napisane: piątek, 8 marca 2013, 07:20
przez tajger
Logowanie lepiej robić pod SESJĘ czy COOKIES? Czy może oba aspekty łączyc, wiadomo, że cookies można wyłączyć.

Re: logowanie...

Napisane: piątek, 8 marca 2013, 12:25
przez Morfidon
Lepiej sesją, można niektóre elementy połączyć. Najlepiej tak jak pokazałem w kursie.