簡體   English   中英

如何允許電子郵件以及用戶名登錄帳戶?

[英]how to allow email as well as username to login into account?

長期以來,我一直使用用戶名作為登錄我的網站帳戶的唯一選擇,但是大多數用戶忘記了他們的用戶名,因此我想同時添加電子郵件和用戶名作為登錄選項。

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

<?php

if(isset($_POST["user_login"]) && isset($_POST["password_login"])) {
$user_login = preg_replace('#[^A-Za-z0-9@._\(\)\']#i', '', $_POST["user_login"]);
$password_login = preg_replace('#[^A-Za-z0-9!@._]#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而不是最新版本,我知道它已被棄用,因此我已經更改了所有查詢,這是一個舊代碼。

您可以在登錄表單中提供選項以選擇登錄名(單選按鈕)類型為用戶名或電子郵件,然后相應地更改查詢:

 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");

通過檢查post data is email or not嘗試此操作

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

暫無
暫無

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

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