PHP登录页面身份验证无效

时间:2016-11-25 14:59:51

标签: php html html5 login php-7

我有两个.php文件。所有的HTML和PHP,没有SQL,也不需要/使用它。一个是登录页面,另一个是目的地。当我输入我设置的登录详细信息时,我无法到达目的地。这是两个页面的代码:

登录:

<!DOCTYPE html>

(php tag here can't type it)
session_start();

$username="testu";
$password="testp";
$_SESSION['logged_in']=false;   

if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) {
    header("Location: dest.php");
    exit;
}

if (isset($_POST['user']) && isset($_POST['pass'])) {
    if ($_POST['user'] == $username && $_POST['pass'] == $password) {
        $_SESSION['logged_in'] = true;
        header("Location: dest.php");
        exit;
    }
}
?>

<html lang="en">

<head>
    <title>A title</title>
</head>

<body>
    <form action="dest.php" method="post" style="font-    family:calibri;position:absolute;top:40%;left:35%;">
        Username: <input type="text" name="user"/><br><br>
        Password: <input type="password" name="pass"     style="position:relative;left:5px;"/><br><br><br>
    <input type="submit" value="Submit" style="position:relative;left:115px;"/>
    </form>

</body>

</html>

目的地:

<!DOCTYPE html>

(php tag here)
session_start();

if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == false) {
    header("Location: login.php");
    exit;
}   
?>

<html lang="en">

<head>
    <title>A title</title>
</head>

<body>
    <a href="login.php">Log out</a>
</body>

</html>

我注意到当我在目标文件上注释掉php代码时,我可以访问dest.php。问题是,我可以访问任何登录详细信息,或者根本没有。它没有任何作用,或任何有效的东西。如何获得我设定的工作细节?我觉得问题出在登录页面脚本中。非常感谢能够帮助我解决这个问题的任何人。

在此完全解决了这个问题:PHP login authentication not working这一点都不重复,Fred-ii-标记为一个人显然没有注意他要求的代码。他还从我的帖子中删除了他的评论。

2 个答案:

答案 0 :(得分:1)

来自http://php.net/manual/en/function.session-start.php

  

注意:

     

要使用基于cookie的会话,必须在向浏览器输出任何内容之前调用session_start()。

在代码中移动session_start()。例如,

<?php

session_start();

?><!DOCTYPE html>
<!-- and the rest of your code here... -->

答案 1 :(得分:0)

您的问题是session_start();。你必须将它放在你处理会话的每个页面之上。

  

session_start()创建会话或恢复当前会话   通过GET或POST请求传递的会话标识符,或通过   cookie中。

<?php

session_start(); //has to be on top of every site you use sessions

$username = "testu";
$password = "testp";
$_SESSION['logged_in'] = false;

if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) {
    header("Location: dest.php");
}

if (isset($_POST['username']) && isset($_POST['password'])) {
    if ($_POST['username'] == $username && $_POST['password'] == $password) {
        $_SESSION['logged_in'] = true;
        header("Location: dest.php");
    }
}
?>