<?php
$conn=mysqli_connect("localhost", "root", "","users");
if (!$conn) {
echo "Bad connection!!!";
}
$user_name=$_POST['user_name'];
$user_password=$_POST['user_password'];
$sql_check=mysqli_query($conn, "SELECT user_name, password FROM user_info WHERE user_name='$user_name' AND password='$user_password'") or die("Bad sql query");
if (mysqli_num_rows($sql_check)>0) {
echo "user exists";
}
else {
$sql_insert=mysqli_query($conn, "INSERT INTO user_info (id, user_name, password) VALUES (null,'$user_name', '$user_password')");
echo "New user added!!!";
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form method="POST" action="pdo_konekcija.php">
<input type="text" name="user_name">
<input type="password" name="user_name">
<input type="submit" name="btn_submit" value="REGISTER">
</form>
</body>
</html>
我有基本的用户注册表格。我无法找到检查用户是否存在的最佳方法,所以如果不是,我想注册新用户,你可以从sql语句中看到。如何为user_password字段包含hash()密码?必须填写这两个字段以进行检查和注册过程。我可以使用这种mysql I程序方式来阻止sql注入吗?我正在从头开始建立注册/登录,所以需要帮助,谢谢大家。
答案 0 :(得分:1)
使用PHP的内置函数进行散列和验证密码,但这需要5.5.0及更高版本。 http://php.net/manual/en/function.password-hash.php
将salt存储在注册时创建的数据库中。 当用户登录时,检查它们是否存在,获取其盐并使用password_verify进行验证。
在处理此数据时使用预准备语句来停止SQL注入
如果您没有5.5.0及更高版本,则github(https://github.com/ircmaxell/password_compat)上有兼容版本。
答案 1 :(得分:0)
要检查用户密码是否匹配,首先检查用户是否存在并检索其密码哈希值,然后通过哈希验证函数运行。
在回答第二个问题时,是的,您当前的系统容易受到SQL注入攻击。