2014-03-05 79 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 
} 
相关问题