Php 会话变量不会传递到其他页面

Php 会话变量不会传递到其他页面,php,session-variables,Php,Session Variables,php会话变量不会从登录页面传递到主页。我可以看到变量以正确的值保存在web服务器上的会话文件中,但是第二页没有看到它们。看起来它每次都会开启一个新的会话 即使成功登录,主页也会重定向回登录页面。我确实看到论坛上就这个问题提出了不少问题。但它们中的大多数都有相同的解决方案。使用session_start() 我在两个页面上都使用了session_start() 我的实际计划是使用MySQL数据库保存会话数据。登录页面会将会话数据写入数据库,但主页不会读取它。我现在正试图使用本地文件来消除DB的任

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

即使成功登录,主页也会重定向回登录页面。我确实看到论坛上就这个问题提出了不少问题。但它们中的大多数都有相同的解决方案。使用session_start()

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

我的实际计划是使用MySQL数据库保存会话数据。登录页面会将会话数据写入数据库,但主页不会读取它。我现在正试图使用本地文件来消除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>

`
管理员登录
登录

login.php
中,更改
$\u会话['loggedin']=“true”
$\u会话['loggedin']=true

是的,您(OP)正在将变量声明为字符串形式的“true”,然后进一步将其作为布尔值进行检查。字符串不是假的,但也不是真的。@LouisLoudogTrottier字符串实际上是真的,除非它是空的。真让人尴尬!!!但敏锐的眼睛值得称赞。我已经看了几个小时的代码,试图找出它到底出了什么问题。@Don't就我所知,字符串的计算结果是真的。('string'==true)但是('string'!==true)。就像1是一个整数,不是真的,但它的计算结果是真的。(真===真)但是(真!==1)。@Louis是的,当然字符串不是字面上的布尔值。在我的语句“字符串为true”中,“is”被计算为“is”被计算为。“;-)<代码>错误报告(E_全部);ini_集('display_errors','1')
<?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>>>>>

?>