[英]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.