Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]php sesje
Forum PHP.pl > Forum > Przedszkole
władek22
Dotychczas uzywałem sesji w taki sposób, że dane przechowywane w $_SESSION['user'] $_SESSION['haslo'] byly uzywane do sprawdzenia czy dany użytkownik ma uprawnienia za pomocą funkcji mysql_connect(hostname,$_SESSION['user'],$_SESSION['haslo']); Taka funkcja byla uzywana na poczatku kazdej z podstron.

Trafiłem na artykuł : http://pl.wikibooks.org/wiki/PHP/Sesje

W ktorym sprawdzenie w tym wypadku odbywa się z tablica a nie z baza (co oczywiscie nie ma znaczenia w tym wypadku chodzi o zasade) odbywa sie tylko raz, jezeli login i haslo wystepuja w tablicy to zostaje wpisana wartosc (do zmiennej sesyjnej uzytkownik ) wieksza niz jeden.

Troche przerobiłem ten skrypt na własny użytek

Kod
<?php

        $uzytkownicy = array(1 =>
                array('login' => 'user1', 'haslo' => sha1('ppp')),
                array('login' => 'user2', 'haslo' => sha1('ddd')),
                array('login' => 'user3', 'haslo' => sha1('fff'))
        );
        
        function czyIstnieje($login, $haslo)
        {
                global $uzytkownicy;
                
                $haslo = sha1($haslo);
                
                foreach($uzytkownicy as $id => $dane)
                {
                        if($dane['login'] == $login && $dane['haslo'] == $haslo)
                        {
                                // O, jest ktos taki - zwroc jego ID
                                return $id;
                        }
                }
                // Jeżeli doszedłe¶ a tutaj, to takiego użytkownika nie ma
                return false;
        } // end czyIstnieje();





        session_start();
        session_regenerate_id();
        
        if(!isset($_SESSION['licznik']))
        {
                
                $_SESSION['licznik'] = 0;
                // Sesja się zaczyna, wiec inicjujemy użytkownika anonimowego
                $_SESSION['userid'] = 0;
        }
        $_SESSION['licznik']++;
        
        echo $_SESSION['licznik'];



        if($_SESSION['userid'] > 0)
        {
                // Ktos jest zalogowany
                echo 'Witaj, '.$uzytkownicy[$_SESSION['uzytkownik']]['login'].' na naszej stronie!';
                echo "<a href=\"login.php\">Wyloguj</a>";
        }
        else
        {




                        if(($id = czyIstnieje($_SESSION['user'], $_SESSION['haslo'])) !== false)
                        {
                                // Logujemy uzytkownika, wpisal poprawne dane
                                $_SESSION['userid'] = $id;
                                echo 'Dziekujemy, zostales zalogowany! <a href="sesja.php">TO samo</a>';
                        }
                        else
                        {
                                echo 'Podales nieprawidlowe dane, zegnaj! <a href="login.php">Dalej</a>';
                        }              


        }
?>

Pytanie czy w kolejnych podstronach wystarczy zaczac sesje session_start();
i sprawdzic wyłącznie czy userid >0 questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif

Czy napewno takie rozwiązanie jest bezpieczne questionmark.gif?

Jezeli ktos sobie stworzy stronę

<?php

session_start();
$_SESSION['userid']=1;
?>
<a href="sesje.php">Link</a>

to czy takie cos zadziała questionmark.gif
Lars
Bezpieczne. To sprawdzanie wystarczy. A jeżeli ktoś sobie zrobi taką stronę, to może co najwyżej ją sobie na localu odpalić, poza tym nic nie zrobi - no chyba, że ma dostęp do twojego serwera.

Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.