<?php //ustawienie sesji include 'db.php'; //return print_r ($_POST); $login = $_POST['login']; $haslo = $_POST['pass']; if ($zapytanie = "SELECT * FROM `uzytkownicy` WHERE `haslo` = ? AND `login` = ?") { $result = $db_mysqli->prepare($zapytanie); $result->bind_param('ss', $hasloMd5, $login); $result->execute(); $result->close(); } elseif ($db_mysqli->error) { } $result2 = mysqli_num_rows($result); $result3 = mysqli_fetch_array($result); $result4 = mysqli_fetch_array($result); //$result4 = mysqli_fetch_all($result); //echo ($result4); //echo($result2); /* if ($result3['kod'] != "aktywowano") { return header("Location: index.php?error=7"); } if (empty($login) || empty($hasloMd5)) { return header("Location: index.php?error=5"); } if ($hasloMd5 != $result3['haslo']) { return header("Location: index.php?error=6"); } if ($ileUzyt = $result3 > 0) { echo "jest wiecej niz 1"; } else { return header("Location: index.php?error=4"); } */ } ?>
Problem jest prawdopodobnie w sekcji zapytania (linie: 13-20) Ponieważ gdy zrobię zwrócenie wyników to wyrzuca mi wartość 0 (Linia 35). Nie wiem dlaczego zapytanie jest błędne i nie wyrzuca mi nic z bazy danych.
Podam także działający skrypt logowania (ale ten jest bez zabezpieczeń przed SQL Infection):
<?php $login = $_POST['login']; $haslo = $_POST['pass']; $zapytanie = "SELECT * FROM `uzytkownicy` WHERE `login` = '$login' AND `haslo` = '$hasloMd5'"; $result = $db_mysqli->query($zapytanie); $result2 = mysqli_num_rows($result); $result3 = mysqli_fetch_assoc($result); if ($ileUzyt = $result3 > 0) { } else { } } ?>
Oraz formularz logowania:
<!DOCTYPE html> <html> <head> <meta name="name" content="content" charset="utf-8"> </head> <body> <?php if (isset($_GET['error'])) { echo "<pre>"; switch ($_GET['error']) { case 0: echo "Wypelnij wszystkie pola"; break; case 1: echo "Hasla nie sa identyczne"; break; case 2: echo "Taki ziomek juz istnieje"; break; case 3: echo "Takie konto nie zostało założone!"; break; case 4: echo "Nie ma takiego uzytkownika w bazie danych"; break; case 5: echo "Nie wpsiałeś loginu i/lub hasła"; break; case 6: echo "Wpisałeś błędne hasło!"; break; case 7: echo "Konto nie zostało jeszcze aktywowane!"; break; default: echo "Nieznany blad"; break; } echo "</pre>"; } if (isset($_GET['success'])) { echo "<h3>"; switch ($_GET['success']) { case 0: echo "rejestracja OK"; break; case '1': echo "Pomyslnie zamieniono na aktywowano"; break; default: echo "Inny błąd"; break; } echo "</h3>"; } ?> <center> <fieldset> <form action="login.php" method="post" accept-charset="utf-8"> </form> </fieldset> <fieldset> <form action="login.php" method="post" accept-charset="utf-8"> </form> </fieldset> </center> </body> </html>