![]() |
![]() |
![]()
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 ![]() ![]() ![]() ![]() ![]() ![]() Czy napewno takie rozwiązanie jest bezpieczne ![]() Jezeli ktos sobie stworzy stronę <?php session_start(); $_SESSION['userid']=1; ?> <a href="sesje.php">Link</a> to czy takie cos zadziała ![]() |
|
|
![]() |
![]()
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ł" |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 17:18 |