基本上只是为我的投资组合制作一些后端,现在很早就这样代码很混乱,还有很多玩法。
我有会议工作,但现在他们没有。
我的网站设置如下:投资组合,然后我的后端的子文件夹。它包含一个index.php(我登录)然后它应该加载dashboard.php并传入会话(应该传入我登录)然后加载所有的仪表板。
然而它加载"你没有登录"奇怪的是..如果我故意在index.php上键入一个不正确的密码,它仍然加载dashboard.php并说"你没有登录"而不只是回声"请再试一次"
我的index.php:http://pastebin.com/eCzxUCkY Dashboard.php:http://pastebin.com/waJ2HAXA
认为将它们发布在那里可能比较简洁。
请帮助:(我已经重新启动了我的电脑,清理了我的缓存,完成了所有工作。它不会在本地工作,也无法在我的主机上工作。但是,我确实有另一个网站运行所有相同的东西,它仍然有效。所以我觉得它是我的实际代码中的东西:(
答案 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'] = ''
。会议仍然活着,它只是空的。
要完全杀死一个会话,你必须“取消设置”它。
希望这有帮助!
快乐的编码!
<强>参考强>