页面加载/重定向取决于用户会话/登录状态

时间:2018-03-25 16:30:37

标签: php redirect

我有一个页面,其中包含一个只能通过登录访问的成员部分。登录后,用户会转发到成员部分,如果尝试访问成员部分而未登录,则会将用户重定向到索引页面。

我想要的是让用户能够在所有页面中保持登录状态,并在顶部显示用户名和注销选项。 但是,默认情况下,下面的会话文件始终会重定向回索引:

<?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");
   }

2 个答案:

答案 0 :(得分:0)

  1. 仅在登录时才创建用户名或用户ID会话
  2. 如果未设置重定向到登录或您要重定向的位置
  3. 检查是否在

    的每个页面中设置了$_SESSION["username"]

    如果(isset($ _ SESSION [&#34;用户名&#34;]!))     {          重定向     }

  4. 无需重定向两种情况或者您可以创建访客访问权限,如果需要或者您希望重定向这两种情况

答案 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);
}