我的php标头不起作用

时间:2015-08-03 18:57:59

标签: php

我希望一旦这个人输入他们的登录信息,就会把他们带到home.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_md5' AND closed='no' LIMIT 1");
    $userCount = mysql_num_rows($sql);
    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;
        header("location: home.php");
        exit();
    } else {
        echo 'That Log In information is incorrect, please try again';
        exit();
   }
}
?>

1 个答案:

答案 0 :(得分:1)

我认为这是(希望)一个测试脚本或学习方法。这很酷,但我建议你研究一些事情:

  1. 您正在使用mysql_ *函数。这些现已弃用。建议使用mysqli或PDO
  2. 您正在使用md5进行密码存储。请改用密码_hash和密码_verify
  3. 使用正则表达式验证数据并不是一个坏主意,并且可以使用它们。但是,您可能希望为正则表达式提供一个量词,因此它不仅仅匹配一个字符。只需在[^ A-Za-z0-9]阻止
  4. 后加一个+
  5. 您的标头可能无法正常工作的主要原因是它区分大小写,并且应该是完整的URL。 See the notes on the PHP manual page for header()
  6. 看看PHP The Right Way。你开始时表现不错,但是如果没有指导,你就会走下去以后会遇到问题的道路。