默认情况下,我使用用户名登录的脚本。但是,可能有人忘记了用户名,我想提供使用电子邮件登录的选项。
以下脚本可以通过将username
替换为email
来使用电子邮件编辑登录。
但是,成功登录后,帐户上显示的内容不是用户名,而是电子邮件地址。
你能解决这个问题吗?
我的代码:
<?php
include('config.php');
if(isset($_SESSION['username']))
{
?>
<html>
<head>
<title>LogIn</title>
</head>
<body>
<div class='message'>You're logged in !!</div>
</body>
</html>
<?php
}
else
{
$ousername = '';
if(isset($_POST['username'], $_POST['password']))
{
if(get_magic_quotes_gpc())
{
$ousername = stripslashes($_POST['username']);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
}
else
{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
}
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req);
if($dn['password']==sha1($password) and mysql_num_rows($req)>0)
{
$form = false;
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
if(isset($_POST['memorize']) and $_POST['memorize']=='yes')
{
$one_year = time()+(60*60*24*365);
setcookie('username', $_POST['username'], $one_year);
setcookie('password', sha1($password), $one_year);
}
?>
<html>
<head>
<title>LogIn</title>
</head>
<body>
<div class='message'>Login Success</div>
<?php
}
else
{
$form = true;
$message = 'Username and password not match';
}
}
else
{
$form = true;
}
if($form)
{
?>
</body>
</html>
<html>
<head>
<title>LogIn</title>
</head>
<body>
<?php
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
?>
<form method='post'>
<div class='login'>
<label for='username'>Username</label><input type='text' name='username' id='username' /><br />
<label for='password'>Password</label><input type='password' name='password' id='password' /><br />
<input type='submit' value='Masuk' />
</div>
</form>
<?php
}
}
?>
</body>
</html>
答案 0 :(得分:0)
您可以触发select id,password,username FROM tbl WHERE username='username' OR email = 'email'
所以这个查询在两种情况下都可以使用用户名或电子邮件地址登录。
之后如果密码匹配,则将用户名(我们最近使用select查询获取)分配给会话..
我希望我理解你的问题。正确?