Witam,
Napisałem (ulepszyłem :)) skrypt logowania. Po zalogowaniu, pobierany jest id użytkownika z bazy, a następnie przypisywany do zmiennej $_SESSION['zalogowany']. Nie wiem, może jestem ślepy i nie zauważyłem czegoś w kodzie, ale dlaczego nic się do tej zmiennej nie przypisuje? ;)
<?php
session_start();
$salt = sha1(...);
$conn = mysqli_connect(...);
$query1 = "SELECT * FROM Users WHERE Login='".mysqli_real_escape_string($conn, sha1($_POST['login'].$salt))."' and Haslo='".mysqli_real_escape_string($conn, sha1($_POST['haslo'].$salt))."'";
$wynik1 = mysqli_query($conn, $query1);
$ile1 = mysqli_num_rows($wynik1);
$query2 = "SELECT ID FROM Users WHERE Login='".mysqli_real_escape_string($conn, sha1($_POST['login'].$salt))."'";
$wynik2 = mysqli_query($conn, $query2);
$ile2 = mysqli_fetch_row($wynik2);
$_POST['id'] = $row[0];
$_POST['ip'] = $_SERVER['REMOTE_ADDR'];
$query3 = "SELECT * FROM bans WHERE ip='".$_POST['ip']."'";
$wynik3 = mysqli_query($conn, $query3);
$ile3 = mysqli_fetch_array($wynik3);
$proby = $row[1];
$data = $row[2];
if($proby == 3 && $data > 10) {
echo ('Przekroczyłeś ilość dozwolonych błędów w logowaniu. Spróbuj ponownie za 10 minut.');
exit();
}
if($ile1 == 1)
{
$_SESSION['zalogowany'] = $_POST['id'];
echo ("<b>Zostałeś zalogowany jako '".$_POST['login']."'.Jeśli przekierowanie nie nastąpi w ciągu 5 sekund, kliknij<a href=\"index.php\">tutaj</a>.");
} elseif ($ile1!==1) {
echo ('Nieprawidłowe dane.');
$query4 = "INSERT INTO bans VALUES('".$_POST['ip']."', '".$_POST['proby']."', '".$_POST['data']."')";
$wynik4 = mysqli_query($conn, $query4);
$query5 = "SELECT * FROM bans WHERE ip='".$_POST['ip']."'";
$wynik5 = mysqli_query($conn, $query5);
$ile5 = mysqli_num_rows($wynik5);
if($ile5 == 1) {
$_POST['proby'] = $_POST['proby'] +1;
$_POST['data'] = 10;
$query6 = "UPDATE bans SET proby='".$_POST['proby']."', czas='".$_POST['data']."' WHERE ip='".$_POST['ip']."')";
$wynik6 = mysqli_query($conn, $query6);
exit();
}
}
?>
Mam też jeszcze jedno pytanie. Na końcu kodu jest blokada na ip (nie dokończona ;)), dlaczego zmienna $ile5 zawsze wynosi 0, jeśli w tabeli mam zapisany rekord?
Tabela w bazie wygląda tak: IP, proby (ilość niepoprawnych prób logowania) i czas (data ostatniej próby)</b>