0

除了管理员用户之外,我的所有登录都可以正常工作。

当我尝试导航到我的 admin.php 时,即使我已经以管理员身份登录,我也会收到“必须登录”。

当我单击管理链接时,我首先转到下面的代码 checkAdmin.php。

<?php
if($_SESSION['userEmail'] != 'admin@hotmail.com') {
    echo "<center><font face='Verdana' size='2' color=red>Must be logged in</font> <br><a href=index.php>Login Here</a></center>";
    exit;
}
?>

我在这方面做错了吗?谢谢。

我有 session_start(); 在我的 admin.php 页面的顶部。我用 print_r($_SESSION); 并得到了这条线,所以它具有正确的价值。

Array ( [userEmail] => admin@hotmail.com ) 

另外,如果我添加 session_start(); 到 checkAdmin.php 然后屏幕就在 checkAdmin,当我点击进入管理页面时。

admin.php 在顶部有这个

session_start();
require "checkAdmin.php";
include("db_info.php");
4

4 回答 4

3

session_start()确保在检查会话变量之前已调用。

于 2012-05-01T22:43:28.890 回答
2
  • $_SESSION['userEmail']您可能在登录过程中没有设置
  • session_start()必须调用。
  • 我会检查你的会话中真正的内容print_r($_SESSION);
于 2012-05-01T22:43:37.317 回答
1

您是否尝试添加session_start()?您必须在查找会话变量之前执行此操作。

试试看:

<?php
session_start();
if($_SESSION['userEmail'] != 'admin@hotmail.com') {
    echo "<center><font face='Verdana' size='2' color=red>Must be logged in</font> <br><a href=index.php>Login Here</a></center>";
    exit;
}
?>
于 2012-05-01T22:48:09.907 回答
1

使用 var_dump() 而不是 print_r。请注意报告的字符串长度,因为某些字符不可见,但显然会导致字符串比较失败。

你可能有一个杂散的空白字符

于 2012-05-01T23:08:03.427 回答