PHP登录检查流程

时间:2013-05-15 16:26:05

标签: php mysql login

我在使用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


?>

1 个答案:

答案 0 :(得分:1)

我认为你应该添加die()来停止脚本

if(mysql_num_rows($result) < 1) {
    header('location:nouser.php');
    die();
}

尚未测试代码。