我在Joomla之外创建了一个登录页面,用于需要登录/密码保护的某些页面。它检查用户是否已经登录,如果没有,则将页面保存到会话变量($ redirected_from)并重定向到登录页面。然后,当他们重新登录时,会将登录状态保存到另一个会话变量($ username),因此如果他们浏览并返回其中一个需要登录的页面,则不会重定向他们再次登录页面。
这一切都很好。您可以使用左侧的菜单显示网站的该部分,并在页面之间和之间进行操作,并记住登录状态。问题是,如果您单击“主页”链接并转到主页,然后返回到该网站的该部分,则会忘记您已登录,并且您再次被重定向到登录页面。
我尝试创建cookie来保存这些值,当你访问" Home"时,确定Joomla正在做一些事情来删除/重置会话变量。我把它回显到页面上的值。它会保存登录状态,直到您访问" Home"然后它就消失了(回声没什么)。
Joomla在主页上有什么东西可以重置任何自定义变量(会话或cookie),如果有的话,是否有任何解决方法?
以下是如何在登录页面上保存变量:
if ($username == $preset_username && $password == $preset_password) {
$session =& JFactory::getSession();
$session->set('user', $username);
if(!isset($_COOKIE['user']) || $_COOKIE['user'] == '') {
setcookie('user', $username);
JRequest::setVar('user', $username, 'COOKIE');
$_COOKIE['user'] = $username;
}
}
以下是每个页面检查用户的方式(使用包含):
if (!($session->get('user'))) {
$session->set('user', "");
}
$user_cookie = $_COOKIE['user'];
if (($session->get('user') == "" || $session->get('user') == null) && (!isset($_COOKIE['user']) || $_COOKIE['user'] == '')) {
...check against list of pages requiring login and if match saves page and redirects (this part works)...
}