请编写一段php代码,能实现账号的注册,判断输入不能为空;查询数据库,若存在相同用户名提示已存在该用户;密码用哈希存储;实现防SQL注入
时间: 2024-03-14 13:43:26 浏览: 144
好的,根据您的要求,我编写了以下的 PHP 代码,实现了账号注册功能,包括输入不能为空、查询用户名是否已存在、密码哈希存储以及防止 SQL 注入攻击:
```php
<?php
// 获取用户输入
$username = $_POST['username'];
$password = $_POST['password'];
// 判断输入不能为空
if (empty($username) || empty($password)) {
echo "用户名和密码不能为空";
exit();
}
// 防止 SQL 注入攻击
$username = mysqli_real_escape_string($conn, $username);
$password = mysqli_real_escape_string($conn, $password);
// 查询数据库,检查用户名是否已存在
$sql = "SELECT * FROM `users` WHERE `username` = '$username'";
$res = mysqli_query($conn, $sql);
if (mysqli_num_rows($res) > 0) {
echo "该用户名已存在,请重新输入";
exit();
}
// 密码哈希存储
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 将用户信息插入数据库
$sql = "INSERT INTO `users` (`username`, `password`) VALUES ('$username', '$hashed_password')";
$res = mysqli_query($conn, $sql);
if ($res) {
echo "注册成功";
} else {
echo "注册失败,请稍后再试";
}
```
需要注意的是,这段代码中的 `$conn` 是数据库连接对象,需要在代码中进行初始化,具体的方法可以参考 PHP 中的 mysqli 连接。另外,为了更好地防止 SQL 注入攻击,建议使用预处理语句来处理 SQL 查询和插入操作。
阅读全文