我有一个页面,其中包含一个只能通过登录访问的成员部分。登录后,用户会转发到成员部分,如果尝试访问成员部分而未登录,则会将用户重定向到索引页面。
我想要的是让用户能够在所有页面中保持登录状态,并在顶部显示用户名和注销选项。 但是,默认情况下,下面的会话文件始终会重定向回索引:
<?php
session_start();
require_once 'user.php';
$session = new USER();
if(!$session->is_loggedin());
{
// session no set redirects to login page
$session->redirect('index.php');
}
?>
以上内容适用于需要登录才能访问的所有页面,但无论是否登录都应访问index.php。
页面顶部的代码:
<?php
require_once("session.php");
require_once("user.php");
$auth_user = new USER();
$userid = $_SESSION['user_session'];
$stmt = $auth_user->runQuery("SELECT * FROM users WHERE userid=:userid");
$stmt->execute(array(":userid"=>$userid));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
?>
这会导致无限循环,使index.php
页面在未登录时无法访问,这对我来说是有意义的。我想无论是否登录,我都需要一个简单的条件来加载页面,或者会话文件中的异常不能在特定页面上重定向(可以使用或不使用登录访问的外部页面)。
我没有包含user.php
文件,因为这个问题只有两个:
public function is_loggedin()
{
if(isset($_SESSION['user_session']))
{
return true;
}
}
public function redirect($url)
{
header("Location: $url");
}
答案 0 :(得分:0)
检查是否在
的每个页面中设置了$_SESSION["username"]
如果(isset($ _ SESSION [&#34;用户名&#34;]!)) { 重定向 }
无需重定向两种情况或者您可以创建访客访问权限,如果需要或者您希望重定向这两种情况
答案 1 :(得分:0)
谢谢大家,我通过将会话开始移动到index.php并在那里创建似乎对我有用的条件来解决类似于上面的解决方案。
session_start();
require_once("user.php");
$pageload = new USER();
if($pageload->is_loggedin()!="")
{
$userid = $_SESSION['user_session'];
$stmt = $load->runQuery("SELECT * FROM users WHERE userid=:userid");
$stmt->execute(array(":userid"=>$userid));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
}