Strona 1 z 1

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

Napisane: niedziela, 17 czerwca 2012, 15:56
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

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

Napisane: poniedziałek, 18 czerwca 2012, 12:20
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

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

Napisane: poniedziałek, 18 czerwca 2012, 16:48
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

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

Napisane: czwartek, 21 czerwca 2012, 09:14
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 ;)

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

Napisane: czwartek, 21 czerwca 2012, 16:25
przez spammakers
Dzięki wielkie, wystarczyło też, żeby obejrzeć do końca na temat register_globals :). Temat do zamknięcia