$_SESSION - Usuwa $login przy odświeżaniu strony

Tutaj dyskutujemy o PHP oraz zgłaszamy i rozwiązujemy problemy dotyczące tego języka.
spammakers
Początkujący
Początkujący
Posty: 8
Dołączył(a): niedziela, 17 czerwca 2012, 15:42

$_SESSION - Usuwa $login przy odświeżaniu strony

Post przez spammakers »

Witam, borykam się z pewnym problemem i mam nadzieję, że uzyskam pomoc z Pana strony.

W 21 lekcji ok. 7 min pokazane jest jak zrobić by zmienna $login wyświetlała się za każdym razem gdy odświeżę stronę, pisząc to samo co pokazane jest na filmie, nie działa tak jak powinno. Kilka razy prześledziłem kod jaki jest na wideo i nie znalazłem żadnej różnicy, nie wiem w czym problem. Wklejam kod na forum i oczekuję na pomoc.

Code: Zaznacz cały

    <?php
    
    session_start();
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">       
    <html xmlns="http://www.w3.org/1999/xhtml" lang="pl">
            <head>

                    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
                    <meta http-equiv="content-language" content="pl" />		
                    <meta name="author" content="Kuba Onyśk" />
                    <meta name="robots" content="index, follow" />	
                    <title>Zaloguj</title>    
                    <meta name="description" content="OPIS STRONY" />
                    <meta name="keywords" content="SŁOWA KLUCZOWE" />
                    
                    <link href="style.css" rel="stylesheet" type="text/css"/>                        
                    
            </head>
              
            <body>
                
                <form action="index.php" method="post" enctype="multipart/form-data">
                    
                    <div>
                        Login: <input type="text" name="login" maxlength="10" size="5"/>
                    </div>
                    
                    <div>
                        Hasło <input type="password" name="haslo" maxlength="15" size="5"/>
                    </div>
                    
                    <div>
                        <input type="submit" value="Zaloguj się" />
                    </div>
                        
                </form>
                
                
                <?php
                
                if(isset($_GET['akcja']) && $_GET['akcja'] == "wyloguj")
                {                    
                    $_SESSION['zalogowany'] = 0;
                    session_destroy();
                    echo "Zostałeś wylogowany";                    
                }//Koniec isset $_GET
                
                if((isset($_POST['login']) && isset($_POST['haslo'])) || $_SESSION['zalogowany'] == 1 )
                {                    
                    if((!empty($_POST['login']) && !empty($_POST['haslo'])) || $_SESSION['zalogowany'] == 1 )
                    {                        
                        if($_SESSION['zalogowany'] == 0)
                        {                     
                        $login = filter_var($_POST['login'], FILTER_SANITIZE_STRING);
                        $haslo = filter_var($_POST['haslo'], FILTER_SANITIZE_STRING);                        
                        }
                                                                 
                       if(($login == "spammakers" && $haslo == "maslo") || $_SESSION['zalogowany'] == 1 )
                        {                         
                            if ($_SESSION['zalogowany'] == 0)
                                $_SESSION['login'] = $login;                                
                                                                                                                
                            echo "Gratulacje wlogowałeś się na konto : ".$login."<br/>";
                            echo "PANEL ADMINISTRACYJNY<br/>";
                            echo "<a href='index.php'>Odśwież<a/><br/>";
                            echo "<a href='index.php?akcja=wyloguj'>Wyloguj</a>";
                            
                            $_SESSION['zalogowany'] = 1;
                            
                        }//Koniec if $login==spammakers                        
                        else
                            echo "Podano niepoprawny login lub hasło, spróbuj ponownie <a href='index.php'>tutaj<a/>";
                        
                        
                    }//Koniec !empty $_POST
                    else
                        echo "Nie podano loginu lub hasła, spróbuj ponownie <a href='index.php'>tutaj<a/>";
                                        
                }//Koniec isset $_POST
                
                ?>
                                                                           
            </body>

    </html>

    
Dziękuję i pozdrawiam
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: $_SESSION - Usuwa $login przy odświeżaniu strony

Post przez Morfidon »

Witam,

Proszę o rozszerzenie zdania: "nie działa tak jak powinno". Skrypt działa tak jak zawsze powinien. Zawsze tak jak napisał go programista. Natomiast to co "powinno" być według naszego mniemania może być zawsze inne.

Domyślam się, że występują ostrzeżenia, jeśli tak to trzeba wejść do pliku php.ini i zmienić
error_reporting = E_ALL | E_STRICT
na
error_reporting = E_ALL & ~E_NOTICE

Pozdrawiam
spammakers
Początkujący
Początkujący
Posty: 8
Dołączył(a): niedziela, 17 czerwca 2012, 15:42

Re: $_SESSION - Usuwa $login przy odświeżaniu strony

Post przez spammakers »

Witam,

Przy okazji rozwiązał pan mój drugi, dosyć irytujący problem, za co dziękuję. Niestety nie o to dokładnie chodziło.

Wg. tej linii i kilku poprzednich(znajdują się w poprzednim poście) :

Code: Zaznacz cały

echo "Gratulacje wlogowałeś się na konto : ".$login."<br/>";
,
powinna wyświetlać się za każdym razem zmienna $login, niestety występuje ona tylko raz po zalogowaniu, a potem znika po ponownym odświeżeniu strony. Proszę wytłumaczyć mi dlaczego tak się dzieje

Dziękuję i pozdrawiam
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: $_SESSION - Usuwa $login przy odświeżaniu strony

Post przez Morfidon »

Zwykła zmienna przecież nie będzie przetrzymywać wartości przez następne strony, jeśli chcesz wiedzieć jaka jest wartość przed przeładowaniem korzystaj z sesji. Zamiast $login pisz $_SESSION['login'].

Pozdrawiam ;)
spammakers
Początkujący
Początkujący
Posty: 8
Dołączył(a): niedziela, 17 czerwca 2012, 15:42

Re: $_SESSION - Usuwa $login przy odświeżaniu strony

Post przez spammakers »

Dzięki wielkie, wystarczyło też, żeby obejrzeć do końca na temat register_globals :). Temat do zamknięcia
Post Reply