2011-07-07 78 views

回答

4

從概念上講,你可能會使用GET用戶名字段到運行鍼對有WHERE子句,其中username等於GET變量數據庫查詢的腳本。如果它返回一個匹配,則會使用用戶名。

有很多方法可以做到這一點,如果您有更具體的規格,我可以詳細闡述。

我們從評論中有一些非常有趣的觀點;從我使用UI的經驗來看,我一定會這樣檢查「內聯」,這意味着您可以通過AJAX檢查用戶名的狀態,以便立即反饋用戶名是否被使用。在這種情況下,你肯定會使用GET

如果這不是你的意圖和你提交任何敏感信息(在這種情況下,很可能是密碼)在你的註冊表格,使用POST(見這個問題:GET versus POST in terms of security?

+1

爲什麼發佈?你並沒有真正執行一個動作,所以不會更合適? – sdleihssirhc

+0

我可以背後。我很習慣'在這裏使用'POST'敏感數據。 – Nic

+0

想想這裏的工作流程:1)用戶填寫表格,2)用戶將數據發佈到服務器,3)驗證< - 這是我們檢查用戶名是否已被使用的地方 – Swift

5

類似:

$sql = 'SELECT * FROM USERS where user_name = "'.$_GET['username'].'"'; 
$res = mysql_query($sql); 
if($res && mysql_num_rows($res)>0){ 
    echo 'taken'; 
} else { 
    echo 'free'; 
} 
+0

對於任何人現在發現這一點,請不要使用這個棄用的代碼。請參閱:http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php –

2

我想你正在尋找這樣的東西。

$username = $_POST['username']; 
$query = sprintf("SELECT * FROM users WHERE user='%s'", mysql_real_escape_string($username)); 
$result = mysql_query($query); 

if(!$result) { 
    // Some kind of error occurred with your connection. 
} else { 
    if(mysql_num_rows($result) > 0) { 
     // Throw an error, the username exists 
    } else { 
     // Good to go... 
    } 
} 
+0

它給我這個錯誤警告:mysql_num_rows()期望參數1是資源,布爾給定。 – mshell

+0

試試這個。這聽起來像你從'mysql_query'中得到了錯誤。你確定你的數據庫配置正確嗎? – Swift

0

試試這個,也許它可以幫助你 當然,你需要修正輸入

//first check if it's not empty input 
if (empty($_POST['userName'])) { 
     $userNameErr = "User name required"; 
    } else { 
     $userName = $_POST['userName']; 
     $getData= $db->prepare("SELECT * FROM tableName WHERE user_name=?"); 
     $getData->bind_param('s', $userName); 
     if($getData->execute()){ 
      $results = $getData->get_result(); 
      if($results->num_rows>0){ 
       $userNameErr = "User name already token"; 
      } 
     } 
     //check the input characters 
     if (!preg_match("/^[0-9_a-zA-Z]*$/", $userName)) { 
      $userNameErr = "Only letters, numbers and '_' allowed"; 
     } 
    } 

希望這會有所幫助。

相關問題