0

好的,所以我要完成的是一个简单的登录页面(adminlogin.php),然后转到一个小的 php 文件(session.php),该文件启动一个 php 会话并将发布的数据存储在会话变量中。完成后,php 文件将重定向到管理菜单页面(adminmenu.php)。在菜单页面上,我检查是否设置了任何会话数据,这会停止访问管理部分而无需登录。我的问题是 session.php 页面似乎没有将帖子值分配给会话存储,因为我被重定向到登录页面。

登录代码

<?php
require('header.php');
?>
<section class="results">
<form id="login" method="post" action="session.php">
<fieldset id="login">
<legend>Admin Login</legend>
<label for="username">Username:</label>
<input type="text" name="user" id="user" size="20"><br />
<label for="password">Password:</label>
<input type="password" name="pwd" id="pwd" size="20"><br />
<input type="submit" id="login" value="Login" />
</fieldset>
</form>
</section>
<?php require('footer.php')?>

会话代码

<?php
    echo "start";
    session_start();
    $_SESSION['username'] = $_POST['user'];
    $_SESSION['password'] = $_POST['pwd'];  
    require('header.php');
    require('footer.php');
    header("Location: adminmenu.php");
?>

菜单代码

  if(!isset($_SESSION['username'])) {
    header("Location: adminlogin.php");

    } else {
    ...
    }
4

2 回答 2

4

You can't have anything output before session_start because it has to set headers. Remove your echo statement and I bet it works

于 2013-11-02T03:41:15.383 回答
0

好的,所以我已经弄清楚了问题所在。

session_start() 需要在使用会话存储的每个页面上的任何内容之前调用

我假设它只需要初始化一个会话,但它实际上用于从存储中调用所有会话变量,以便可以使用它们。

感谢所有的帮助

于 2013-11-02T04:18:54.427 回答