会话变量不会转移到其他页面

时间:2017-04-14 18:57:55

标签: php session-variables

php会话变量不会从登录页面转移到主页。我可以看到在Web服务器上的会话文件中保存的变量具有正确的值,但第二页看不到它们。看起来每次都开启一个新的会话。

即使在成功登录后,主页也会重定向回登录页面。我确实看到论坛上有很多关于这个问题的问题。但他们中的大多数都有相同的解决方案。使用session_start()。

我在两个页面都使用了session_start()。

我的实际计划是使用MySQL db来保存会话数据。登录页面会将会话数据写入DB,但主页不会读取它。我现在正在尝试使用本地文件来消除使用DB进行会话管理的数据库或代码的任何问题。我对本地文件也有同样的问题。

login.php

<?php
session_start();
if(isset($_POST['submit'])) {

//sanitize the data
$user = htmlspecialchars (stripslashes (trim ($_POST['user'])));
$password = htmlspecialchars (stripslashes (trim ($_POST['password'])));
$domain = htmlspecialchars (stripslashes (trim ($_POST['domain'])));
//validate user account from LDAP.
//once authorized, assign session variables and redirect to home page.
$_SESSION['accesslevel'] = "III";
$_SESSION['loggedin'] = "true";
$_SESSION['user'] = $user;
$_SESSION['name'] = $name;
header('location:home.php');
?>
`<!DOCTYPE html>
<html lang="en"> 
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin Login</title>
<link rel="stylesheet" href="css/login.css">
</head>
<body>
<div class="logincontainer">
<div class="login">
    <h1>Login</h1>
        <form action="<?php htmlentities(urldecode($_SERVER['PHP_SELF']));?>" 
method="post">
        <p><b></b><input type="text" name="user" value="" placeholder="ADM_5-
2-1" required autocomplete="off"></p>
        <p><b> </b><input type="password" name="password" value="" 
placeholder="Password" required autocomplete="off"></p>
        <p><select name="domain">
            <option value="DOMAIN">DOMAIN</option>
            <option value="domain">NANET</option>
            <option value="domain">EUNET</option>
            <option value="domain">APNET</option>
            <option value="domain">JPNET</option>
        </select>
        </p>
        <p class="submit"><input type="submit" name="submit" value="Login">
</p>
    </form>
</div>
</div><br>
<div class="error">
    <?php //print_r($_POST);?>
    <?php //var_dump($_POST);?>
    <?php //echo $msg;?>
</div>
</body>
</html>

home.php

<?php
session_start();
if ((!isset($_SESSION['loggedin'])) or ($_SESSION['loggedin'] != true)) {
header ("location: login.php");
}

<<<<html (php uses session variable (name) for user profile menu>>>>>

?>

1 个答案:

答案 0 :(得分:-1)

login.php中,将$_SESSION['loggedin'] = "true";更改为$_SESSION['loggedin'] = true;