我在使用php登录脚本时遇到问题(如下)。如果有人输入不存在的用户名,我想重定向到nouser.php;如果输入了错误的密码(但是有效的用户名),我想重定向到wrongpass.php。以下代码几乎可以工作。如果我注释掉了整个错误的密码部分,那么nouser部分按预期工作显示nouser页面,但如果我留下了错误的密码部分,我会得到错误密码情况的wrongpass.php页面。如果我输入有效用户但密码错误,那么我的密码错误(正确行为)。 简单地说,如果有这个名字的nouser而不是wrongpass.php页面,我怎么能确保我重定向到nouser.php ..
<?php
$username = $_POST['username'];
$password = $_POST['password'];
//connect to the database here
require_once 'includes/login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database, $db_server)
or die("Unable to select database: " . mysql_error());
$username = mysql_real_escape_string($username);
$query = "SELECT password, salt
FROM users
WHERE username = '$username';";
$result = mysql_query($query);
//wrong user section
if(mysql_num_rows($result) < 1) //no such user exists
{
header('Location: nouser.php');
}
//wrong password section
$userData = mysql_fetch_array($result, MYSQL_ASSOC);
$hash = hash('sha256', $userData['salt'] . hash('sha256', $password) );
if($hash != $userData['password']) //incorrect password
{
header('Location: wrongpass.php');
}
//login successful
?>
答案 0 :(得分:1)
我认为你应该添加die()来停止脚本
if(mysql_num_rows($result) < 1) {
header('location:nouser.php');
die();
}
尚未测试代码。