if($_SERVER['REQUEST_METHOD'] == 'POST') {
$login = $_POST['login'];
$password = $_POST['password'];
//if(isset($login) && isset($password)) {
if((isset($login) && isset($password)) && preg_match('/^[a-z0-9\-\_]+$/i', $login)) {
if($result = $db->query("SELECT * FROM `users` WHERE `username`='{$login}'")) {
if($count = $result->num_rows) {
while($row = $result->fetch_object()) {
$user_name = $row->username;
$user_password = $row->password;
if(password_verify($password, $user_password)) {
setcookie('u_log', $user_name);
$_COOKIE['u_log'] = $user_name;
setcookie('u_pass', $user_password);
$_COOKIE['u_pass'] = $user_password;
header("Location: /user/$user_name");
} else { $error = 1; $err_message = 'Неверный логин или пароль.'; }
}
} else { $error = 1; $err_message = 'Неверный логин или пароль.'; }
} else { $error = 1; $err_message = 'Неверный логин или пароль.'; }
}
}
I'm aware I need to escape single and double quotes in user input but don't know if this fully safe solution as there some commands that can be executed anyway. Can somebody analyze my code and describe what I need to do here?
Slightly changed code in the almost top. Now it should be more secure?