我不知道如果已经使用了用户名,如何阻止用户创建帐户..有人可以帮助我..我尝试在互联网上查看脚本或教程,但他们并不好......我&#39 ;我只是编码中的noobie ..我的表被称为" user_acc"用户名字段为"用户名"
这是我的ajax脚本
function validateEmail(str){
var testresults;
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
//var filter1=/^[A-Za-z]+$/;
if (filter.test(str))
testresults=true;
else
testresults=false
return (testresults)
}
//registration
$(document).ready(function(){
$('#submbut').click(function(){
var fn = $('#fnamae').val();
var ln = $('#lnamae').val();
var un = $('#unamae').val();
var pass = $('#pass').val();
var pass2 = $('#pass2').val();
var mail = $('#mail').val();
var cont = $('#cont').val();
var url = "http://localhost/picturecity/acceptusr";
if(fn == "" && ln == "" && un == "" && pass == "" && pass2 == "" && mail == "" && cont == "" || fn == "" || ln == "" || un == "" || pass == ""
|| pass2 == "" || mail == "" || cont == ""){
alert('Error: Fill up all fields');
}
else{
if(pass == pass2)
{
if(validateEmail(mail)){
$.ajax({
url:url,
data: "fn="+fn+"&ln="+ln+"&un="+un+"&pass="+pass+"&mail="+mail+"&cont="+cont,
type:"post",
success:function(e){
alert('Registration Successful');
}//success
});//ajax
}
else{
alert("Invalid Email Format");
}
}//if
else{
alert('Password Do Not Match');
}
}
});//click
}); //document
我的注册控制器代码
public function acceptusr(){
$data = array (
"firstname"=>$this->input->post('fn'),
"lastname"=>$this->input->post('ln'),
"username"=>$this->input->post('un'),
"password"=>md5($this->input->post('pass')),
"email"=>$this->input->post('mail'),
"contact"=>$this->input->post('cont')
);
$this->Mod_admin->addtotb('user_acc',$data);
}
模型
public function addtotb($table, $data)
{
$this->db->insert($table,$data);
}
请帮助我如何创建用户名验证,谢谢..
答案 0 :(得分:1)
您只需要进行简单的验证。如果您使用的是AJAX,则需要执行这些步骤。
username
发送到服务器。username
。true
的存在情况,使用false
或username
回复客户。为此,您需要从服务器验证它。您在发布的问题中所做的只是验证电子邮件地址。假设您熟悉jQuery的AJAX函数,则需要执行以下操作:
将username
发送到服务器。
$.get("checkuser.php", {username: $("#username").val()}, function (response) {
});
检查数据库中是否存在username
。
$db->query("SELECT * FROM `users` WHERE `username`=" . $_GET["username"]);
使用true
或false
回复客户,具体取决于username
的存在。
if ($db->rowCount() == 1)
die ("true");
else
die ("false");
根据回复,向用户发送客户端警报!
$.get("checkuser.php", {username: $("#username").val()}, function (response) {
if (response == "true")
{
alert("User already exists!");
return false;
}
});
答案 1 :(得分:1)
最好的解决方案是使数据库表行"用户名" unique。
答案 2 :(得分:1)
非常简单的设置mysql列,其中用户名存储为唯一。
ALTER TABLE tbl_name
ADD UNIQUE (usr_name);
将查询插入
$q= mysqli_query($conn,"insert into users values ('xx', 'xx', 'xx')");
if(!$q){
$error= mysqli_error($q);
//or $error="user name already exits "
header("location:login.php?error=$error");
}
答案 3 :(得分:0)
在$this->db->insert($table,$data);
之前添加:
$userq = $this->db->query("SELECT * FROM user_acc WHERE username LIKE '".$data['username']."'");
if($userq->num_rows() == 0)
答案 4 :(得分:0)
/* $username is the desired username from New user that was input field and
you can use mysqli too just by chaging my sql to mysqli all the best */
$result = mysql_query("SELECT * FROM users WHERE username='$username'");
if(empty($username) or empty($password1) or empty($password2))
{
echo '<p>Fields Empty !</p>';
}
elseif(mysql_num_rows($result) == 1)
{
echo "User exist";
}
elseif($password1 == $password2)
{
$password = md5($password1);
mysql_query("INSERT INTO users (username, password) VALUES('$username', '$password')");
echo "<p>Successfull Register</p>";
}
else
{
echo 'Password Not Matched';
}