如何解决当人们注册时防止重复的用户名
我将向您展示我的 PHP 和 html 代码,这里我的用户在数据库中注册,但我有一个问题要问您。如何禁止使用相同的名称?数据库中的用户名不一样或多个账户的一个用户没有登录同名
<?PHP
$user = new User($_POST);
$title = $user->username = $user->username = '';
$errors = array('username' => '','password' => '');
if(isset($_POST['submit'])){
//check username
if(empty($_POST['username'])){
$errors['username'] = 'an username is required <br />';
}else{
$user->username = $_POST['username'];
if(!preg_match('/^[a-zA-Z\s]+$/',$user->username)){
$errors['username'] = 'Name must be letters and spaces only';
}
}
//check password
if(empty($_POST['password'])){
$errors['password'] = 'an password is required <br />';
}else{
$user->password = $_POST['password'];
//Password mora imati najmanje 8 karaktera
if(strlen($user->password) < 8){
$errors['password'] = "Password must be atelaast 8 characters long <br>";
if(!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/',$user->password)){
$errors['password'] = 'of at least length 8 <br>containing at least one lowercase letter<br>and at least one uppercase letter<br>and at least one number';
}
}
}
if(array_filter($errors)){
//echo 'errors in the form';
}else{
//echo 'form is valid';
header('Location: login.PHP');
$user->save();
}
}
?>
解决方法
取决于您使用的数据库。
一种更简单的方法是在表上创建一个唯一的约束,这也将强制执行更新并消除对触发器的需要。就这样做:
MSSQL 示例:
ALTER TABLE [dbo].[TableName]
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
[Name],[Date]
)
然后你就可以做生意了。 当您在数据库中创建这样的触发器时 - 将无法创建具有相同用户名的用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。