PHP Session无论如何都无法正常工作 - 但是其他网站无效

时间:2015-09-06 10:42:01

标签: php session

基本上只是为我的投资组合制作一些后端,现在很早就这样代码很混乱,还有很多玩法。

我有会议工作,但现在他们没有。

我的网站设置如下:投资组合,然后我的后端的子文件夹。它包含一个index.php(我登录)然后它应该加载dashboard.php并传入会话(应该传入我登录)然后加载所有的仪表板。

然而它加载"你没有登录"奇怪的是..如果我故意在index.php上键入一个不正确的密码,它仍然加载dashboard.php并说"你没有登录"而不只是回声"请再试一次"

我的index.php:http://pastebin.com/eCzxUCkY Dashboard.php:http://pastebin.com/waJ2HAXA

认为将它们发布在那里可能比较简洁。

请帮助:(我已经重新启动了我的电脑,清理了我的缓存,完成了所有工作。它不会在本地工作,也无法在我的主机上工作。但是,我确实有另一个网站运行所有相同的东西,它仍然有效。所以我觉得它是我的实际代码中的东西:(

3 个答案:

答案 0 :(得分:0)

我在使用会话时总是做两件事:

1)使用PHP函数设置会话名称:

session_name('myAppName');
session_start();

2)如果用户登录失败,我会破坏会话:

session_destroy();

所以它删除了会话信息中可能存在的任何内容。

你试过吗?

答案 1 :(得分:0)

    session_start();
    $username = $_SESSION["username_login"];
    $loggedin = true;
}

dashboard.php中你的右括号错位了。您使用的是IDE还是文本编辑器?大多数IDE都会突出显示语法错误。一旦我将代码粘贴到Netbeans中,我花了不到几秒的时间才找到它。

我猜你从index.php复制/粘贴了这段代码,并没有删除其中一个大括号。容易犯错误。一个体面的IDE会立即发现它。

答案 2 :(得分:0)

试试这个。我添加了一些额外的错误检查。

在登录页面上替换此

<?php
session_start();
if (isset($_SESSION["username_login"])) {
    $username = $_SESSION["username_login"];
    $loggedIn = true;
}

用这个

<?php
session_start();
if (isset($_SESSION["username_login"]) && $_SESSION["username_login"] != '') { // does the session exist and if so, does it have a value
    $username = $_SESSION["username_login"];
    $loggedIn = true;
} else {
    $_SESSION['username_login'] = NULL; // empty the session value
    unset($_SESSION['username_login']); // kill the session
    $loggedIn = false;
}

在信息中心上,替换此

<?php
session_start();
    $username = $_SESSION["username_login"];
    $loggedin = true;
}
?>

用这个

<?php
    session_start();
    if (isset($_SESSION["username_login"]) && $_SESSION["username_login"] != '') { // does the session exist and if so, does it have a value
        $username = $_SESSION["username_login"];
        $loggedin = true;
    } else {
        $_SESSION['username_login'] = NULL; // empty the session value
        unset($_SESSION['username_login']); // kill the session
        $loggedin = false;
    }
?>

session_destroy()不会“杀死”某个会话。它相当于$_SESSION['something'] = ''。会议仍然活着,它只是空的。

要完全杀死一个会话,你必须“取消设置”它。

希望这有帮助!

快乐的编码!

<强>参考

session_destroy()

unset()