从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内核)配对。使用这两个选项,您可以使您的系统
- 有干净的网址
- 描述了使用配置文件的路由
- 解析哪些类(控制器)处理特定请求
- 自动将请求参数注入控制器方法
{
"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();
}