繁体   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