2017-03-03 48 views
0

嗨我創建了註冊/註冊表單,註冊新用戶並將其添加到我的數據庫。 但在測試中,我發現有人可以使用已經使用的用戶名註冊。 這裏是我的代碼:MySQL PHP註冊表單用戶名檢查

<?php 
require('db.php'); 
// If form submitted, insert values into the database. 
if (isset($_REQUEST['username'])){ 
     // removes backslashes 
    $username = stripslashes($_REQUEST['username']); 
     //escapes special characters in a string 
    $username = mysqli_real_escape_string($con,$username); 
    $email = stripslashes($_REQUEST['email']); 
    $email = mysqli_real_escape_string($con,$email); 
    $password = stripslashes($_REQUEST['password']); 
    $password = mysqli_real_escape_string($con,$password); 
    $trn_date = date("Y-m-d H:i:s"); 
    $query = "INSERT into `users` (username, password, email, trn_date) 
VALUES ('$username', '".md5($password)."', '$email', '$trn_date')"; 
     $result = mysqli_query($con,$query); 
     if($result){ 
      echo "<div class='form'> 
<h3>You are registered successfully.</h3> 
<br/>Click here to <a href='login.php'>Login</a></div>"; 
     } 
    } 
?> 

我試圖改變查詢語句從數據庫中選擇所有用戶名和檢查,如果查詢的結果拉回相同的用戶名照耀處,並返回「採取用戶名」如果是這樣,如果不在運行上面顯示的instert語句的else語句中並打印成功註冊的消息。

任何幫助?

+0

爲什麼不你在你的MySQL數據庫的'用戶名'列中添加一個唯一索引? – Sablefoste

+0

http://stackoverflow.com/questions/20296777/trying-to-check-if-username-already-exists-in-mysql-database-using-php –

+0

@Sablefoste你介意提供一些更多的信息?林有點不確定你的意思?對於這一切,我都相當陌生,所以很抱歉,如果我在這裏很愚蠢 –

回答

1

好的,所以這是你可以做的。

首先,創建唯一索引爲您的用戶名欄是這樣的:

CREATE TABLE users (
... create columns... 
PRIMARY KEY (user_id), 
UNIQUE (username), 
INDEX login (username, password) 
); 

然後在註冊你的PHP腳本,檢查是否存在用戶名:

$q = "SELECT user_id FROM users WHERE username='$filtered_username_variable'"; 
    $r = mysqli_query ($con, $q); 

    if (mysqli_num_rows($r) == 0) { // No: of rows returned. 0 results, Hence the username is Available. 

      //code to INSERT into Database 

    } else { // The username is not available, print error message. 

       echo 'Uh-oh, This username has already been registered.'; 

    } 
+0

我試過這個,但它沒有工作:(我想知道它是在哪裏我把代碼。Shoud $ q語句在我之前if(isset($ _ REQUEST ['username'])){? –

+0

明白了,我有我的發言在錯誤的地方!謝謝你:) –

+1

不客氣。很高興我能幫上忙。 – Aj334