gpt4 book ai didi

php - MySQL PHP 注册表单用户名检查

转载 作者:行者123 更新时间:2023-11-29 10:58:53 25 4
gpt4 key购买 nike

您好,我已经创建了一个注册/注册表单,用于注册新用户并将其添加到我的数据库中。然而,在测试中,我发现有人可以使用已被占用的用户名进行注册。这是我的代码:

<?php
require('db.php');
// If form submitted, insert values into the database.
if (isset($_REQUEST['username'])){
// removes backslashes
$username = stripslashes($_REQUEST['username']);
//escapes special characters in a string
$username = mysqli_real_escape_string($con,$username);
$email = stripslashes($_REQUEST['email']);
$email = mysqli_real_escape_string($con,$email);
$password = stripslashes($_REQUEST['password']);
$password = mysqli_real_escape_string($con,$password);
$trn_date = date("Y-m-d H:i:s");
$query = "INSERT into `users` (username, password, email, trn_date)
VALUES ('$username', '".md5($password)."', '$email', '$trn_date')";
$result = mysqli_query($con,$query);
if($result){
echo "<div class='form'>
<h3>You are registered successfully.</h3>
<br/>Click here to <a href='login.php'>Login</a></div>";
}
}
?>

我尝试更改查询语句以从数据库中选择所有用户名,并检查查询结果是否拉回输入的相同用户名,如果是,则返回“用户名已获取”,如果不在运行的 else 语句中,则返回“用户名已获取”如上所示的 instert 语句并打印注册成功的消息。

有什么帮助吗?

最佳答案

好的,这就是你可以做的。

首先,为您的用户名列创建一个唯一索引,如下所示:

CREATE TABLE users (
... create columns...
PRIMARY KEY (user_id),
UNIQUE (username),
INDEX login (username, password)
);

然后在您的注册 PHP 脚本中,检查用户名是否存在:

    $q = "SELECT user_id FROM users WHERE username='$filtered_username_variable'";
$r = mysqli_query ($con, $q);

if (mysqli_num_rows($r) == 0) { // No: of rows returned. 0 results, Hence the username is Available.

//code to INSERT into Database

} else { // The username is not available, print error message.

echo 'Uh-oh, This username has already been registered.';

}

关于php - MySQL PHP 注册表单用户名检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42585361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com