在地址栏上写一个页面(例如base-name/admin/cars
)时,有没有办法让它无法访问?我需要通过单击站点中的某个链接使其仅可访问。这可能吗?我不知道该尝试什么,已经搜索了一段时间,但一无所获。
答案 0 :(得分:1)
您可以检查http引荐来源,如果为空,则不显示该页面或重定向它们。请参阅以下两个Stackoverflow页面:
如何查看推荐人: Checking the referrer
引荐来源何时为空: In what cases will HTTP_REFERER be empty
答案 1 :(得分:0)
在很多方面,你可以想象,如
由于某人已输入url.com/this-page
,您不希望此页面一直打开,除非用户未登录。
您可以做的是,在页面顶部,您只需要检查会话值。如果会话已设置则其正常,否则应将其重定向到主页。
实施例 这-page.php文件 让我们说在CI中我已经制作了一个共同的帮助文件,它将检查所有相应的会话页面。
function isUser()
{
$CI = & get_instance();
if (isset($CI->session->userdata['User']))
{
//logged in your stuffs.
}
else
{
//redirect('login-page');
}
}
通过编码链接在链接中发送时间和唯一ID参数。通过打开该链接,唯一ID将被解码并直到除非它不会被打开。
让我们说可能的链接可以是
url.com/this-page/123456abcdef
您需要在此页面上执行的操作是,您需要检查给定URL链接上的ID并对其进行解码。如果编码和解码得到正确的值,则页面有效。确保id应该保存在任何地方,以便您可以跟踪和解码它。
$unique_id = base64_decode($id);
if($unique_id!=''&& $time!='')
{
$cur_time = time();
if ($cur_time - $time < 10800)
{
//valid link
}
else
{
//link has been expired
}
}
else
{
// link has been broken.
}
答案 2 :(得分:0)
我会做这样的事情:
document.getElementById('yourLinkId').onclick = function(e){
// ajax should be here to send simple parameter - we'll call it granted:'yes'
// upon success - location = 'theRestrictedPage.php'; - yup just like that
e.preventDefault();
}
现在您要限制的PHP页面
<?php
session_start();
if(!isset($_POST['granted']) || $_POST['granted'] !== 'yes'){
header('LOCATION:thePageAboveTheLinkWasOn.php'); die;
}
// if it passes condition page is accessible
/* if you want to force a click to happen again
unset($_SESSION['granted']);
*/
?>