如果已经使用了用户名,如何阻止用户创建帐户

时间:2014-10-07 11:20:50

标签: php jquery ajax codeigniter

我不知道如果已经使用了用户名,如何阻止用户创建帐户..有人可以帮助我..我尝试在互联网上查看脚本或教程,但他们并不好......我&#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);
}

请帮助我如何创建用户名验证,谢谢..

5 个答案:

答案 0 :(得分:1)

您只需要进行简单的验证。如果您使用的是AJAX,则需要执行这些步骤。

  1. username发送到服务器。
  2. 检查数据库中是否存在username
  3. 根据true的存在情况,使用falseusername回复客户。
  4. 根据回复,向用户发送客户端警报!
  5. 为此,您需要从服务器验证它。您在发布的问题中所做的只是验证电子邮件地址。假设您熟悉jQuery的AJAX函数,则需要执行以下操作:

    1. username发送到服务器。

      $.get("checkuser.php", {username: $("#username").val()}, function (response) {
      });
      
    2. 检查数据库中是否存在username

      $db->query("SELECT * FROM `users` WHERE `username`=" . $_GET["username"]);
      
    3. 使用truefalse回复客户,具体取决于username的存在。

      if ($db->rowCount() == 1)
        die ("true");
      else
        die ("false");
      
    4. 根据回复,向用户发送客户端警报!

      $.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';
}