PHP登录和会话
我正试图在我的网站上重建一个登录名,我继承了这个网站,但是这个登录名目前是用ajax构建的,需要花费很长时间才能登录 我写了以下允许用户登录的内容PHP登录和会话,php,mysql,ajax,Php,Mysql,Ajax,我正试图在我的网站上重建一个登录名,我继承了这个网站,但是这个登录名目前是用ajax构建的,需要花费很长时间才能登录 我写了以下允许用户登录的内容 <form name="form1" method="post" action="checklogin.php"> <input name="myusername" type="text" id="myusername"> <input name="mypassword" type="text" id="
<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>
但我的问题是,当用户被发送到“赚取积分”页面时,会有一个检查以查看用户是否登录,如果他们没有登录,则会将用户发送回主页
if(!$usersClass->checkLoggedIn()) {
header("Location: /index.php");
}
现在我知道我的用户正在使用上面的表单登录,因为他们正在被重定向,并且我没有收到任何错误消息
我不熟悉PHP和AJAX,所以我想问的是为什么会这样?我需要放一块饼干吗
下面是我的类,检查用户是否登录
/**
* 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;
}
以前
header("location:earn-credits.php");
您可能应该使用$usersClass来设置用户会话数据。第一个
会话\u start()
调用在用户端创建一个phpsIdcookie,这有助于服务器维护哪个会话变量属于谁。课程旨在为您处理这些事情
您不需要为登录系统显式设置另一个cookie。但是,一定要注意以下几点:
首先,checklogin.php上的脚本是否正在启动会话?(session_start()或php.ini中的自动会话启动)
其次,checklogin.php是否设置了$\u会话['loggedIn']['id']、$\u会话['loggedIn']['username']等
第三:您重定向到的页面(earn credits.php)是否也在启动会话?您需要在每个页面上使用session_start(),否则会话将丢失
第四:我在您的代码中没有看到任何AJAX
最后,只是s风格的问题:第一个if语句毫无意义。我指的是带有:if(isset($\u 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'])));
}
我没看到有问题吗?你说“现在我知道我的用户正在用上面的表单登录,因为他们被重定向了,我没有收到任何错误消息。”那么问题出在哪里?问题出在哪里?您声明用户正在登录一条无错误消息……因此,如果登录成功,用户将被重定向到earn-credits.php。那你为什么要检查用户是否登录到earn-credits.php?如果(!$usersClass->checkLoggedIn()){header(“Location:/index.php”);}告诉我有一个usersClass,它被用作用户数据的管理类。很抱歉,错过了那个。。。
public function checkLoggedIn() {
return ((isset($_SESSION['loggedIn']['id']) &&
isset($_SESSION['loggedIn']['username']) &&
isset($_SESSION['loggedIn']['password']) &&
isset($_SESSION['loggedIn']['credits']) &&
isset($_SESSION['loggedIn']['active'])));
}