Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]php sesje
władek22
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 1
Dołączył: 30.10.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Lars
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 15
Dołączył: 29.04.2005
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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.


--------------------
(\.../) This is Bunny. Copy and paste bunny into
(O.o) your signature to help him gain world domination.
(> <) Zanim zapytasz | Też się przyda | Pomogłem ci? Kliknij "Pomógł"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 17:18