Cześć zrobiłem krótki skrypt logowania się do bazy danych, wygląda następująco:
<?php
//ustawienie sesji
include 'db.php';
//return print_r ($_POST);
if (isset($_POST['log_in'])) { $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) {
echo "Could not prepare SQL: " . $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
if (isset($_POST['log_in'])) { $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) {
echo "jest wiecej niz 1";
} else {
header("Location: index.php?error=4"); }
}
?>
Oraz formularz logowania:
<!DOCTYPE html>
<meta name="name" content="content" charset="utf-8">
<?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;
}
}
if (isset($_GET['success'])) {
switch ($_GET['success']) {
case 0:
echo "rejestracja OK";
break;
case '1':
echo "Pomyslnie zamieniono na aktywowano";
break;
default:
echo "Inny błąd";
break;
}
}
?>
<form action="login.php" method="post" accept-charset="utf-8"> <label><input type="text" name="login" placeholder="wpisz swoj login"></label> <label><input type="password" name="pass" placeholder="podaj haslo"></label> <input type="submit" name="log_in" value="Zaloguj"></input>
<form action="login.php" method="post" accept-charset="utf-8"> <label><input type="email" name="login" placeholder="wpisz swoj E-mail"></label> <label><input type="password" name="pass" placeholder="podaj haslo"></label> <label><input type="password" name="pass2" placeholder="powtorz haslo"></label> <input type="submit" name="register" value="Zarejestruj"></input>