Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]PHP - logowanie / sesje
Forum PHP.pl > Forum > Przedszkole
php__amator
Witojcie,
po kilku tygodniach usiadłem żeby zmodyfikowac kilka rzeczy na mojej
stronie która do tej pory była kompletnie nie zabezpieczona i napotkałem problem z którym ni jak nie potrafię sobie poradzić.

Otóż:
Logowanie odbywa sie za pomocą formularza przesyłającego zapytanie MySQL, sprawdza poprawność loginu i hasła (szyfrowane md5)
potem sprawdza zwróconą wartość i pozwala iść dalej.
Oczywiście na brak jakichkolwiek zabezpieczeń wystarczy zapamiętać adres kolejnej strony żeby ominąć logowanie.
Dzieci mogę tak nabrać ale nie kogoś kto coś na ten temat wie. W związku z tym chciałem dołożyć sesje i sprawdzanie czy osobnik uprawniony jest zalogowany czy nie a jeśli nie to "WON" spowrotem do index.php. I tak oto chciałem sobie to rozwiązać, ale niestety nie chce mi to działać.
Wobec powyższego proszę o podpowiedź w którym miejscu popełniłem błąd i jak go naprawić.
Druga kwestia to co zrobić (co dodać w nagłówkach kolejnych podstron żeby sprawdzany był status usera/ zalogowany czy nie)żeby osoba niezalogowana nawet jeśli zna nazwe kolejnej strony np: wybór.php po wpisaniu w linii adresu jeśli nie zalogowany wywalany był do strony logowania?
HILFE, HELP, POMOCY
poniżej przedstawiam moją wersję jak zwykle skopaną przez brak wiedzy smile.gif
  1. <?php
  2. // ob_start();
  3. if (isset($_POST['Submit'])) {
  4. $username = $_POST['username'];
  5. $password = $_POST['password'];
  6. $hashed_password = md5($password);
  7. $query = "SELECT * FROM users WHERE username = '$_POST[username]' AND hashed_password = '$hashed_password' LIMIT 1";
  8. $result = mysql_query($query, $connection);
  9. if (mysql_num_rows($result) ==1) {
  10. $_SESSION['zalogowany'] = true;
  11. header("Location: selector.php");
  12. } else {
  13. $_SESSION['zalogowany'] = false;
  14. echo '<div style="button" align="center" id="radar"><form action="index.php"><button></br><h4>User name/password combination incorrect.<br />Please make sure</br>your caps lock is off and try again!</h4></br><h8>click Login</h8></button></div>';
  15. }
  16. }
  17. ?>


Pozdrawiam phpamator
!*!
Na kolejnych stronach dajesz właśnie

  1. if(isset($_SESSION['zalogowany'])) {/* tak */} else {/* nie i tu przekieorwanie */}


Niepotrzebnie przypisujesz $_POST to zmiennych (a jak już to je też sprawdzaj). Sprawdzaj wszędzie tam gdzie musi być sesja zalogowania czy ona faktycznie istnieje. Jeśli nie, zrób przekierowanie + usuwanie sesji. Dodatkowo umieść w sesji jakieś dane, jak czas, ue, ip żeby to jakoś zróżnicować.
mortus
W każdym pliku na początku należy dodać taki oto kod:
  1. if(!isset($_SESSION['zalogowany']) || !$_SESSION['zalogowany']) {
  2. header("Location: index.php");
  3. exit();
  4. }

Należy zabezpieczyć dane logowania (przede wszystkim $_POST['username']) przed SQL Injection.
Po przekierowaniu funkcją header() trzeba zatrzymać wykonywanie skryptu funkcją exit().
php__amator
No i dziękuję panowie, pomogło, byłem blisko rozwiązania problemu, coś jednak naknociłem i nie działało jak należy
ale po przeanalizowaniu waszych wskazówek moja strona już jest bezpieczniejsza. bo byle chłopek nie wejdzie ot tak sobie i nie
zobaczy informacji których nie powinien smile.gif

Dzięki i pozdrówka

To oczywiście jeszcze nie koniec moich zmagań bo generalnie wciąż pracuję nad tym projektem więc jeśli będę miał jakieś wątpliwości bądź pytania
nie omieszkam zapytac/poprosić o pomoc.
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.