2014-03-05 83 views
0

很長一段時間我一直使用用戶名作爲唯一的選項登錄到我的網站帳戶,但大多數用戶忘記了他們的用戶名,所以我想添加電子郵件和用戶名作爲登錄選項。如何允許電子郵件以及用戶名登錄賬戶?

這裏是我的代碼來創建會話並登錄用戶。

<?php 

if(isset($_POST["user_login"]) && isset($_POST["password_login"])) { 
$user_login = preg_replace('#[^[email protected]_\(\)\']#i', '', $_POST["user_login"]); 
$password_login = preg_replace('#[^[email protected]_]#i', '', $_POST["password_login"]); 
$md5password_login = md5($password_login); 
$sql = mysql_query("SELECT id FROM users WHERE username='$user_login' AND password='$md5password_login' LIMIT 1"); 
//check for their existance 
$userCount = mysql_num_rows($sql); //count the number of rows returned 
if ($userCount == 1) { 
while($row = mysql_fetch_array($sql)) { 

$id = $row["id"]; 
} 
$_SESSION["id"] = $id; 
$_SESSION["user_login"] = $user_login; 
$_SESSION["password_login"] = $password_login; 
exit("<meta http-equiv=\"refresh\" content=\"0\">"); 
} else { 
echo "Your Username or Password is Incorrect. please try again."; 
exit(); 
} 
} 
?> 

如何添加用戶名登錄電子郵件?

注意:教我php的老師向我展示瞭如何使用mysql_query,而不是最新版本,我知道它已被棄用,所以我已經更改了所有的查詢,這是一箇舊代碼。

+0

兩個用戶名和電子郵件應該在你的電子郵件是獨一無二的。提交登錄表單後,檢查字符串是否包含'@',如果是,請檢查電子郵件地址和密碼,否則請檢查用戶名和密碼 –

回答

1

你可以給你的登錄表單上的選項,選擇登錄(單選按鈕)作爲輸入用戶名或Email.Then相應地改變你的查詢:

if($logintype=="Username") 
    { 
    //Current Username query 
    } 
    else 
    { 
    //Email Login query 
    } 

,或者你可以在查詢中使用兩種:

$sql = mysql_query("SELECT id FROM users WHERE (username='$user_login' || email='$_POST[user_login]') AND password='$md5password_login' LIMIT 1"); 
+0

否我想在mysql_Query中添加檢查電子郵件以及用戶名,但是它返回錯誤。 – rahulkapoor99

+0

請檢查更新的答案 –

+1

做更新的版本,但請確保您的電子郵件地址字段已設置爲數據庫中的唯一密鑰。否則,如果有人擁有2個具有相同地址和密碼的帳戶,他們將始終登錄到最近創建的帳戶。 –

0

試試這個..通過檢查post data is email or not

$email = $_POST["user_name"]; 
if (preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) 
{ 
// email query 
} 
else 
{ 
// username query 
} 
相關問題