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 = 'Неверный логин или пароль.'; }
}
}
我知道我需要在用户输入中转义单引号和双引号,但不知道这是否是完全安全的解决方案,因为有些命令可以执行。有人可以分析我的代码并描述我需要做什么吗?
几乎在顶部改变了代码。现在它应该更安全吗?
答案 0 :(得分:3)
安全的?
password_needs_rehash()
并使用它。setcookie()
。