[英]Check if username already exists in database
我想做一個if語句,檢查MYSQL數據庫中是否已經存在用戶名。 我嘗試了一些不同的東西,但是我無法使其工作。 每次在瀏覽器中進行測試時,我都會收到一條通知
注意:未定義的索引:etc中的用戶名。
如果它與$ result變量或$ check變量有關,或兩者都不相關,我感到困惑。
這是HTML表單和PHP腳本。 https://gist.github.com/anonymous/9704354
謝謝,祝您周末愉快!
您的代碼中有些錯誤。
首先,永遠不要將變量直接放在SQL查詢中,這就是SQL注入的方式。 開始為MYSQL使用PDO或其他庫。
您收到未定義通知的原因是由於此行。
$result = mysql_query("SELECT * FROM users WHERE username = '$_POST[create_user]'");
應該沒有修復巨大的SQL Injection漏洞
$result = mysql_query("SELECT * FROM users WHERE username = '{$_POST['create_user']}'");
另外,您應該在選擇查詢的末尾添加“ LIMIT 1”,以加快處理速度。 無需尋找多個用戶。
您可以通過僅檢查row_count而不是檢查文本值來驗證用戶。 由於MySQL對某些字段不區分大小寫,因此用戶名“ AAAaaa”將等於“ aaaAAA”。 如果改為查看行數,則將確保該文本的數據庫中沒有用戶名。 或者,如果您要使用PHP進行檢查,請確保通過strtolower()
傳遞用戶名
當您開始使用PDO時,以下示例將為您提供幫助。
$dbh = new PDO() // Set the proper variables http://us2.php.net/pdo
if(empty($_POST['create_user'])) {
echo 'Username is Empty. Always check if POST and Get data is set';
die();
}
$query = "SELECT * FROM `users` WHERE `username` = ? LIMIT 1;"
$data = array($_POST['create_user']);
$sth = $dbh->prepare($query);
if(!$sth->execute($data)) {
echo 'Handle SQL Error';
die();
}
if($sth->rowCount() == 0) {
echo 'Unused Username';
}else{
echo 'Used Username';
}
這就是我發現的
$_POST['username']
應該類似於$_POST['create_user']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.