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

从php中的未授权页面重定向到索引页面,php,Php,我有一个用户登录后就可以访问的页面。如果用户在没有登录的情况下单击页面的链接,我想重定向到索引页面。如何做到这一点 顺便说一句,这是我一直在尝试的代码,它的工作,但我只是想知道这是正确的。谢谢 <?php session_start(); if(!isset($_SESSION['admin_id'])){ //if login option in session is not set then header("Location: index.php"); } ?> 只需

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

顺便说一句,这是我一直在尝试的代码,它的工作,但我只是想知道这是正确的。谢谢

<?php
session_start();

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

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

只需使用绝对路径。只需在本文中看到差异

使用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基金会与普通PHP的优点在于,您可以很容易地扩展系统的功能,并将代码分成更小的部分。

“免费”扩展功能的一个简单示例是为会话(Memcached、Mongo或PDO)而不是本机PHP会话使用不同的存储引擎

还可以将HTTP基金会与其他组件(如SyfFoY路由和HTTP内核)配对。使用这两个选项,您可以使您的系统

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

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

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

从PHP全局文件中创建一个
请求
对象,如下所示

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();
}

令人惊讶的是,当我在任何搜索引擎上寻找“PHP重定向”时,都会得到有用的结果。如果我这样做可以吗?不只是检查你已经维护的会话,因为我认为当你授权一个用户时,你正在创建一个具有某个名称的会话,所以在这里使用该会话进行检查,或者我的帖子对你很有用??
use Symfony\Component\HttpFoundation\RedirectResponse;
// ...
if ($request->hasPreviousSession() && $request->getSession()->get('admin_id') {
    $response = new RedirectResponse('http://success.url');
    $response->send();
}