从PHP中的未授权页面重定向到索引页面

时间:2014-09-18 16:39:54

标签: php

我有一个页面,一旦用户登录就可以访问。如果用户在没有登录的情况下点击页面链接,我想重定向到索引页面。如何做到这一点?

顺便说一下,这是我一直在尝试的代码并且它有效但我只是想知道这是否正确。感谢。

<?php
session_start();

if(!isset($_SESSION['admin_id'])){ //if login  option in session is not set then

header("Location: index.php");
}
?>

2 个答案:

答案 0 :(得分:0)

you can do this by using $_SESSION management.
if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
{
  header('Location:'your path');
  exit;
}

只需使用绝对路径。请看这篇文章的不同之处 Which one to use absolute or relative path?

答案 1 :(得分:0)

使用Symfony HTTPFoundation组件来处理会话,重定向,HTTP请求,HTTP响应等等。

简短的回答:

您可以检查会话并处理重定向,如下所示:

use Symfony\Component\HttpFoundation\RedirectResponse;
// ...
if ($request->hasPreviousSession() && $request->getSession()->get('admin_id') {
    $response = new RedirectResponse('http://success.url');
    $response->send();
}

长期回答

使用HTTP Foundation与普通PHP的优点是,您可以非常轻松地扩展系统功能,并将代码分成更小的部分。

扩展功能的一个简单示例&#34;免费&#34;正在为您的会话(Memcached,Mongo或PDO)使用不同的存储引擎,而不是本机PHP会话。

您还可以将HTTP Foundation与Symfony Routing和HTTP Kernel等其他组件配对。使用这两个,您可以启用您的系统

  • 拥有干净的网址
  • 使用配置文件描述路线
  • 解决哪些类(控制器)处理特定请求
  • 自动将请求参数注入控制器方法

安装:

使用composer将其安装为项目依赖项

{
    "require": {
        "symfony/http-foundation": "~2.5"
    }
}

使用:

从PHP全局变量中创建Request对象

use Symfony\Component\HttpFoundation\Request;
// ...
$request = Request::createFromGlobals();

创建会话并设置值:

use Symfony\Component\HttpFoundation\Session\Session;
// ...
$session = new Session();
$request->setSession($session);
$request->getSession()->set('admin_id', $id);

在重新指导用户之前,请检查会话

use Symfony\Component\HttpFoundation\RedirectResponse;
// ...
if ($request->hasPreviousSession() && $request->getSession()->get('admin_id') {
    $response = new RedirectResponse('http://success.url');
    $response->send();
}