我有一个页面,一旦用户登录就可以访问。如果用户在没有登录的情况下点击页面链接,我想重定向到索引页面。如何做到这一点?
顺便说一下,这是我一直在尝试的代码并且它有效但我只是想知道这是否正确。感谢。
<?php
session_start();
if(!isset($_SESSION['admin_id'])){ //if login option in session is not set then
header("Location: index.php");
}
?>
答案 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();
}