簡體   English   中英

如果用戶名已經注冊,如何拋出錯誤信息

[英]How to throw an error message if username is already registered

的index.php

<!DOCTYPE HTML>  
   <html>
   <head>
       <style>
       .error {
        color:red;
       }
      </style>
  </head>
  <body>  

<?php
// define variables and set to empty values
include_once 'connect.php';
$nameErr = $emailErr = $usernameErr = $passwordErr = $DateOfBirthErr = $departmentErr = $ageErr = "";
$name    = $email = $username = $password = $DateOfBirth = $department = $age = "";

if (isset($_POST['submit'])) {
    if (empty($_POST["name"])) {
        $nameErr = "Name is required";
    } else {
        $name = test_input($_POST["name"]);
        // check if name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
            $nameErr = "Only letters and white space allowed";
        }
    }

    if (empty($_POST["email"])) {
        $emailErr = "Email is required";
    } else {
        $email = test_input($_POST["email"]);
        // check if e-mail address is well-formed
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $emailErr = "Invalid email format";
        }
    }

    if (empty($_POST["username"])) {
        $usernameErr = "username is required";
    } else {
        $username = test_input($_POST["username"]);
        // check if name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z ]*$/", $username)) {
            $usernameErr = "Only letters and white space allowed";
        }
    }

    if (empty($_POST["password"])) {
        $passwordErr = "password is required";
    } else {
        $password        = test_input($_POST["password"]);
        $hashed_password = password_hash($password, PASSWORD_DEFAULT);
        // check weather password is alphanumeric
        if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{6,}$/', $password)) {
            $passwordErr = "Password must be alphanumeric and atleast 6 characters 
    long!";
        }
    }

    if (empty($_POST["Date_of_birth"])) {
        $DateOfBirthErr = "Date Of Birth is required";
    } else {
        $DateOfBirth = test_input($_POST["Date_of_birth"]);
    }

    if (empty($_POST["department"])) {
        $departmentErr = "Department is required";
    } else {
        $department = test_input($_POST["department"]);
    }

    if (empty($_POST["age"])) {
        $ageErr = "AGE is required";
    } else {
        $age = test_input($_POST["age"]);
    }

    if ($nameErr == "" && $emailErr == "" && $usernameErr == "" && $passwordErr == "") {
        $check = "SELECT * FROM users WHERE username = '$_POST[username]'";
        $rs    = mysqli_query($mysqli, $check);
        $da    = mysqli_fetch_array($rs, MYSQLI_NUM);
        if ($da[0] > 1) {
            echo "Username Already in Exists<br/>";
        }

        else {
            $sql = "INSERT INTO users(`id`,`username`, `password`, `email` , `name` , 
   `Date_of_birth` , `department` ,`age`)
         VALUES ('','" . $username . "', '" . $hashed_password . "', '" . $email . "' , 
    '" . $name . "' , '" . $DateOfBirth . "' , '" . $department . "' , '" . $age . "')";

            if (mysqli_query($mysqli, $sql)) {
                echo "Registered successfully";
            } else {
                echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);
            }
            mysqli_close($mysqli);
        }
    }

}

function test_input($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
?>

       <div style="padding-left: 250px">
    <h2>Registration Form</h2>
     <p><span class="error">All fields are required </span></p>
    <form method="post" action="">  
     Name: 
   <input type="text" name="name" style="margin-left: 52px">
    <span class="error"> <?php echo $nameErr;?></span>
     <br><br>
    E-mail:
    <input type="text" name="email" style="margin-left: 48px">
     <span class="error"><?php echo $emailErr;?></span>
   <br><br>
  Username:
   <input type="text" name="username" style="margin-left:26px">
    <span class="error"> <?php echo $usernameErr;?></span>
   <br><br>
   Password:
 <input type="password" name="password" style="margin-left:30px">
   <span class="error"> <?php echo $passwordErr;?></span>
  <br><br>
   Date Of Birth :
  <input type="date" name="Date_of_birth">
 <span class="error"> <?php echo $DateOfBirthErr;?></span>
      <br><br>
       Age :
     <input type="number" name="age" style="margin-left:62px">
 <span class="error"> <?php echo $ageErr;?></span>
   <br><br>
  Department :
   <select name="department" style="margin-left:14px">
     <option value="EE">Electrical & Electronics</option>
 <option value="EC">Electronics & Communication</option>
 <option value="ME">Mechanical</option>
     <option value="CS">Computer Science</option>
 <option value="CV">Civil</option>
    <option value="IS">Information Science</option>
  </select>
   <span class="error"> <?php echo $departmentErr;?></span>
    <br><br>
 <input type="submit" name="submit" value="Register">  
 </form>
 </div>
  </body>
 </html>

connect.php

<?php

$databaseHost     = 'localhost';
$databaseName     = 'amith';
$databaseUsername = 'root';
$databasePassword = '';

$mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName);

?>

我正在創建一個簡單的php注冊表格,我只有一個未得到解決的問題,即,當注冊時任何人輸入相同的用戶名時,將出現一條錯誤消息,提示已經使用了我的用戶名,但是我嘗試了上述代碼,它不起作用。 請誰能幫助我解決我的問題。

之前

$sql = "INSERT INTO users(`id`,`username`, `password`, `email` , 
  `name` , `Date_of_birth` , `department` ,`age`)
         VALUES ('','".$username."', '".$hashed_password."', '".$email."' , 
   '".$name."' , '".$DateOfBirth."' , '".$department."' , '".$age."')";

您可以編寫SQL來檢查用戶名是否存在:

SQL: 'SELECT username from users where username = $username';

如果此查詢返回的結果計數大於0,則顯示錯誤消息“此用戶名已存在”; 如果結果為0,則繼續執行INSERT功能。

在插入新用戶之前,您可以使用以下選擇查詢用戶名:

SELECT username FROM users WHERE username='$username'

如果此查詢返回多於0行,則用戶名已存在。

嗨,你可以這樣嘗試

變量應該像這樣$ _POST ['username']

 $sql = "INSERT INTO users(`id`,`username`, `password`, `email` , `name` ,`Date_of_birth` , `department` ,`age`) VALUES ('', ".$username.", ".$hashed_password.", ".$email." , ".$name." , ".$DateOfBirth." , ".$department." , ".$age.")";

解決此唯一用戶名問題的有效方法是在從UI輸入時驗證用戶名。

第1步 :在html輸入框中,應該使用輸入的用戶名作為參數對php頁面進行jquery或js函數調用。

第2步 ,后端php scrpt將簡單地檢查數據庫中的用戶名,如果存在則將返回JSON o / p,表明userbane alreasy存在,否則它將返回true。

步驟3 :使用簡單的Js在UI上顯示消息,並阻止進一步處理表單。

另外,在表單提交之后和插入數據庫表之前,您必須檢查用戶名的唯一性,以避免兩個具有相同用戶名的不同用戶同時提交。 另外,如果可能,請確保用戶名是數據庫表中的主鍵,以避免並發提交具有相同用戶名的問題 ,這將在底部添加另一個可靠的保護層。

<input type="text" name="uname" id="uname" onblur="unameOnBlur(this.value);">

您可以在onkeyup或任何合適的事件上進行操作。 在unameOnBlur內部進行像這樣的ajax調用

$.ajax({
                    url: 'json_uname.php?uname=' + uname,
                    dataType: 'json'
                }).done(function (j){
if(username unique)
//your action code
 })

上面的示例是ajax調用示例Json_uname.php頁面很容易編寫以針對db進行檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM