Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Problem z logowaniem
Forum PHP.pl > Forum > Przedszkole
CichyLowca
Witam serdecznie.
Ostatnio robilem sobie gre w necie, wszystko pieknie i ladnie. Ale teraz nie dziala logowanie, cos wczoraj kombinowalem. Przez oewien czas dzialalo ale przez moja nature (Ryzyk-Fizyk) cos sie popsulo ;__; Moze mi ktos udzielic rad? Jezeli ktos zna odpowiedz to prosze jednoczesnie o podpowiedz w kwesji zabezpieczenia:
  1.  
  2. <?php
  3. include 'includes/config.php';
  4.  
  5. $login = $_POST['login'];
  6. $password = $_POST['password'];
  7. <table align="center">
  8. <tr>
  9. <td class="title" align="center">
  10. Panel Logowania
  11. </td>
  12. <tr>
  13. <td class="post" align="center">';
  14. if($login and $password){
  15. $logged = $db->query("SELECT COUNT (*) FROM users WHERE login='$login' , password='$password'");
  16. if($logged == true){
  17. echo 'ERROR';
  18. }
  19. if($query > 0){
  20. $_SESSION['query'] = '0';
  21. $_SESSION['logged'] = true;
  22. $_SESSION['login'] = $login;
  23. header ('Location: /');
  24. } else echo 'Zle dane Liczba takich kat: '.$logged.'<br />';
  25. } else {
  26. <form method="POST" action="?ok">
  27. Login: <br />
  28. <input type="text" name="login"/><br />
  29. Haslo: <br />
  30. <input type="text" name="password"/><br />
  31. <input type="submit" value="Zaloguj"/><br />
  32. </form>
  33. ';
  34. }
  35. echo '</td></tr></table>';
  36. ?>
eheh
he.. nie widziałem jeszcze gorszego logowania ever..
Turson
1. Dane z formularza wkładasz prosto do zapytania - SQL Injection.
2. Nie sprawdzasz czy formularz został wysłany. Powinno wysypać Ci błędami o 'undefined variable' po wejściu na stronę, ale pewnie masz wyłączone raportowanie błędów.
3. Staraj się oddzielać HTML od PHP.

Na szybko napisałem jak to powinno wyglądać z wykorzystaniem PDO (mysql jest przestarzałe a PDO zapewnia bezpieczeństwo)
  1. <?PHP if(!isset($_SESSION['logged'])): ?>
  2. <form action="" method="post">
  3. <legend>Logowanie</legend>
  4. <label for="login">Login</label>
  5. <input type="text" name="login"><br>
  6. <label for="password">Hasło</label>
  7. <input type="password" name="password"><br>
  8. <input type="submit" value="Zaloguj">
  9. </form>
  10. <?PHP endif; ?>
  11. <?php
  12. $db = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
  13. if(isset($_POST['login'])){
  14. $stmt = $db->prepare("SELECT * FROM users WHERE login=:login AND password=:password");
  15. $stmt->bindValue(':login', $_POST['login'], PDO::PARAM_STR);
  16. $stmt->bindValue(':password', $_POST['password'], PDO::PARAM_STR);
  17. $stmt->execute();
  18. if($stmt->rowCount()==1){
  19. //logowanie udane
  20. $_SESSION['logged'] = true;
  21. $_SESSION['login'] = $login;
  22. }
  23. else{
  24. //zły login bądź hasło
  25. }
  26. }
  27. ?>
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.