我试图在我的网站上重建登录,我继承了网站,但登录目前使用ajax构建并永远登录。
我编写了以下内容,允许用户登录...
<form name="form1" method="post" action="checklogin.php">
<input name="myusername" type="text" id="myusername">
<input name="mypassword" type="text" id="mypassword">
<input type="submit" name="Submit" value="Login">
</form>
如果登录成功,则会重定向用户...
header("location:earn-credits.php");
我的问题是,当用户被发送到“Earn-credits”页面时,检查用户是否登录,如果他们没有将用户发送回主页......
if(!$usersClass->checkLoggedIn()) {
header("Location: /index.php");
}
现在我知道我的用户正在使用上面的表单登录,因为它们被重定向并且我没有收到任何错误消息。
我是PHP和AJAX的新手,所以我问的是为什么这个?我需要设置一个cookie吗?
以下是我的班级,用于检查用户是否已登录...
/**
* check if user is logged in
*/
public function checkLoggedIn()
{
if(isset($_SESSION['loggedIn']))
{
if(isset($_SESSION['loggedIn']['id']) &&
isset($_SESSION['loggedIn']['username']) &&
isset($_SESSION['loggedIn']['password']) &&
isset($_SESSION['loggedIn']['credits']) &&
isset($_SESSION['loggedIn']['active'])) {
return true;
}
}
return false;
}
答案 0 :(得分:1)
之前
header("location:earn-credits.php");
您应该使用$ usersClass来设置用户会话数据。
答案 1 :(得分:0)
第一个session_start()
调用会在用户端创建一个 PHPSESSID Cookie,这有助于服务器维护哪个会话变量属于谁。会议旨在为您处理这些事情。
您无需为登录系统明确设置其他Cookie。但是,请查看session-stealing and ways to prevent it。
答案 2 :(得分:0)
一些指示:
首先,checklogin.php上的脚本是否开始会话? (session_start()或者可能在php.ini中启动自动会话)?
第二,是checklogin.php设置$ _SESSION ['loggedIn'] ['id'],$ _SESSION ['loggedIn'] ['用户名']等?
第三:您重定向到的页面(earn-credits.php)是否也开始了会话?您需要在每个页面上使用session_start(),否则会话将丢失。
第四:我的代码中没有看到任何AJAX。
最后,只是样式问题:第一个if语句没有意义。我的意思是:if(isset($ _ SESSION ['loggedIn']))。你已经在检查了。
public function checkLoggedIn()
{
if(isset($_SESSION['loggedIn']))
{
if(isset($_SESSION['loggedIn']['id']) &&
isset($_SESSION['loggedIn']['username']) &&
isset($_SESSION['loggedIn']['password']) &&
isset($_SESSION['loggedIn']['credits']) &&
isset($_SESSION['loggedIn']['active'])) {
return true;
}
}
return false;
}
也可能是:
public function checkLoggedIn() {
return ((isset($_SESSION['loggedIn']['id']) &&
isset($_SESSION['loggedIn']['username']) &&
isset($_SESSION['loggedIn']['password']) &&
isset($_SESSION['loggedIn']['credits']) &&
isset($_SESSION['loggedIn']['active'])));
}