【问题标题】:Check if username exists in mysql table via php? [duplicate]通过php检查mysql表中是否存在用户名? [复制]
【发布时间】:2013-07-23 02:01:39
【问题描述】:

我想弄清楚如何让我的注册 php 代码检查注册者的用户名是否已被占用,如果是,请不要注册,告诉用户它已被占用。 这是我的整个寄存器处理文件。

<?php
$con=mysqli_connect("localhost","root","","users");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$hpassword = hash( 'sha512', $_POST['password'] );
$eusername = mysqli_real_escape_string( $con, $_POST['username'] );
$eemail = mysqli_real_escape_string( $con, $_POST['email'] );
$fusername = str_replace(' ', '', $eusername);

$sql="INSERT INTO users (username, password, email)
VALUES
('$fusername','$hpassword','$eemail')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
mysqli_close($con);
?> 

【问题讨论】:

  • username上设置唯一约束,然后读取mysqli_error($con),一次命中数据库。
  • 编辑:我还想知道是否可以通知会员他/她不能在用户名中使用空格。现在它被设置为删除空格然后插入它。
  • 去掉空格,然后和原来的输入比较,如果不一样,就是有空格!
  • @TrevorZucker 你还在努力搜索吗?您提出的问题以及您在评论中提出的问题已经多次回复,已经使用搜索。 How to check if user already exists in MySQL with PHPPhp Ensuring a unique usernameunable to check username exists or not
  • @Prix 我用谷歌搜索了一下,但找不到可行的方法。

标签: php mysql


【解决方案1】:
$sql=mysql_query("SELECT FROM users (username, password, email) WHERE username=$fusername");
 if(mysql_num_rows($sql)>=1)
   {
    echo"name already exists";
   }
 else
    {
   //insert query goes here
    }

您可以从数据库中检查用户是否存在,然后粘贴代码

【讨论】:

    【解决方案2】:
    include ('database_connection.php');
    if (isset($_POST['formsubmitted'])) {
        $error = array(); 
        if (empty($_POST['username'])) { 
            $error[] = 'Please Enter a name '; 
        } else {
            $username = $_POST['username']; 
        }
    
        if (empty($_POST['e-mail'])) {
            $error[] = 'Please Enter your Email ';
        } else {
    
            if (filter_var($_POST['e-mail'], FILTER_VALIDATE_EMAIL)) {
                //for email validation (refer: http://us.php.net/manual/en/function.filter-var.php)
    
                $email = $_POST['e-mail'];
            } else {
                $error[] = 'Your EMail Address is invalid  ';
            }
    
        }
    
        if (empty($_POST['password'])) {
            $error[] = 'Please Enter Your Password ';
        } else {
            $password = $_POST['password'];
        }
    
        if (empty($error))
    
        { // If everything's OK...
    
    
            $query = "SELECT * FROM members  WHERE username ='$username'";
            $result = mysqli_query($dbc, $query); // here $dbc is your mysqli $link
            if (!$result) {
                echo ' Database Error Occured ';
            }
    
            if (mysqli_num_rows($result) == 0) { // IF no previous user is using this username.
    
                $query = "INSERT INTO `members` ( `username`, `email`, `password`) VALUES ( '$name', '$email', '$password')";
    
                $result = mysqli_query($dbc, $query);
                if (!$result) {
                    echo 'Query Failed ';
                }
    
                if (mysqli_affected_rows($dbc) == 1) { //If the Insert Query was successfull.
    
                    // Send an email
    
                    // Finish the page:
                    echo '<div class="success">Thank you for registering! A confirmation email has been sent to ' . $email . ' Please click on the Activation Link to Activate your account </div>';
    
                } else { // If it did not run OK.
                    echo '<div class="errormsgbox">You could not be registered due to a system error. We apologize for any inconvenience.</div>';
                }
    
            } else { // The username is not available.
                echo '<div class="errormsgbox" >That username has already been registered.
    </div>';
            }
    
        } else { //If the "error" array contains error msg , display them.... e.g....
    
            echo '<div class="errormsgbox"> <ul>';
            foreach ($error as $key => $values) {
    
                echo '  <li>' . $values . '</li>';
    
            }
            echo '</ul></div>';
    
        }
    
        mysqli_close($dbc); //Close the DB Connection
    
    } // End of the main Submit conditional.
    

    【讨论】:

      【解决方案3】:

      您可以使用Dave的方式检查错误代码,也可以预先检查用户是否存在

       $sql="SELECT FROM users (username, password, email) WHERE username=$fusername"
      

      现在检查一下结果。如果提取了一行,则该用户存在。向用户表明这一点。如果不是,那么太阳就照在用户身上。给他一块饼干

      【讨论】:

      • 不要这样做。这很活泼。
      • 种族。这是什么意思?
      • 表示涉及race condition。另一个用户有可能在 SELECTINSERT 之间使用用户名。
      • 哦,确实如此。但是如果您通过 ajax 指定用户名,则无法让用户知道他的用户名是否可用
      • @IgnacioVazquez-Abrams 难道你不能只使用transaction 来防止竞争条件吗?
      猜你喜欢
      • 2014-06-24
      • 2016-06-19
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多