Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]logowanie
Forum PHP.pl > Forum > Przedszkole
-kalis-
Witam,

Chciałem spróbować pdo i stowrzylem sobie takie logowanie na podstawie tutoriali:

  1. <?php
  2.  
  3. function protect($string)
  4. { $string = trim(strip_tags(addslashes($string)));
  5. return $string;
  6. }
  7.  
  8. try
  9. {
  10. if($_SERVER['REQUEST_METHOD'] =='POST')
  11. {
  12. $pdo = new PDO('mysql:host=localhost;dbname=baza', "root", "", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  13. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14.  
  15. $o_login = protect($_POST['o_login']);
  16. $o_pass = protect($_POST['o_pass']);
  17.  
  18.  
  19. $stmt = $pdo -> prepare('SELECT count(1) as WYNIK FROM lista_osob WHERE o_nazwisko= :o_login AND o_pass= :o_pass');
  20. $stmt -> bindParam(':o_login', $o_login, PDO::PARAM_STR);
  21. $stmt -> bindParam(':o_pass', $o_pass , PDO::PARAM_STR);
  22.  
  23.  
  24. $wynik = $stmt -> execute();
  25.  
  26. $stmt ->closecursor();
  27.  
  28. if ($wynik==1)
  29. {
  30. echo "Logowanie udało się";
  31. echo $wynik;
  32. }
  33.  
  34.  
  35.  
  36. }
  37. else
  38. {
  39. echo '
  40. <form method="post" action="login.php">
  41. <TABLE align="center" bgcolor="#fffaaa" border="0" width="350px" CELLPADDING="2" CELLSPACING="2">
  42. <TR>
  43. <TD>
  44. <h2>Logowanie do systemu</h2>
  45. Podaj login :<br />
  46. <input type="textbox" name="o_login" value="" size="50">
  47. </TD>
  48. </TR>
  49. <TR>
  50. <TD> Podaj hasło :<br />
  51. <input type="password" name="o_pass" value="" size="50">
  52. <input type="hidden" name="log">
  53. </TD>
  54. </TR>
  55. <TR>
  56. <TD>
  57. <br />
  58. <input class="wyslij_formularz" align="center" type="submit" name="submit" value="Zaloguj">
  59. </TD>
  60. </table>
  61. </form> ';
  62. }
  63. }
  64. catch(PDOException $e)
  65. {
  66. echo 'Błąd połączenia z bazą danych: '.$e->getMessage();
  67. }
  68. ?>


Niestety obojenie do wpisze do logowania zawsze jest Logowanie udało się i wynik=1
skowron-line
http://php.net/manual/en/pdostatement.execute.php
zobacz co zwraca metoda execute
Cytat
Returns TRUE on success or FALSE on failure.
i chodzi tu o poprawne wykonanie zapytania a nie ilość zwróconych rekordów
-kalis-
no ale nie powinno zwrocic 0 jezeli wpisze dane ktora nie sa bazie ?
dopiero zaczynam te pdo i proszę o wskazanie jak to ugryzć
skowron-line
Nie.
Tak jak napisałem wcześniej zwraca TRUE w przypadku kiedy zapytanie wykona się poprawnie nie będzie błędu, a nie w przypadku kiedy zwróci zero wyników.
http://php.net/manual/en/pdostatement.fetchall.php
+
http://pl1.php.net/manual/en/function.count.php
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-2024 Invision Power Services, Inc.