我有index.php,其中包括像
<?php
define('MyConst', TRUE);
include_once('template/header.php');
if (!empty($_GET['action'])) {
$action = $_GET['action'];
$action = basename($action);
include("template/$action.php");
} else {
include("template/main.php");
}
include_once('template/footer.php');
?>
字符串
在模板目录中我有main.php,它链接到其他页面,如page1.php,page2.php。
<a href="?action=page1">Goto page 1</a>
<a href="?action=page2">Goto page 2</a>
型
如何防止用户直接在URL上输入“http://mydomain.com/?action=page1“来访问页面?如果他们已经做了,并将他们重定向到main.php?
6条答案
按热度按时间bmp9r5qi1#
你不能。你想要的是不可能的。
对于服务器端,没有办法知道URL是键入的还是单击的。
zphenhs42#
如果我理解正确的话,您想要的是阻止用户访问
http://example.org/?action=page1
,除非他们来自http://example.org/?action=main
。要做到这一点,您必须能够检测它们是否来自http://example.org/?action=main
。最安全的方法是生成一些随机值,当用户访问http://example.org/?action=main
时将其关联到用户,并检查当用户想要访问http://example.org/?action=page1
时是否有正确的值关联到用户。如果没有,他们试图直接访问该页面。lyfkaqu13#
检查HTTP_REFERER,如果它没有指向正确的值(比如你的页面),然后重定向用户。
mzillmmw4#
也许你可以试试这个,在你的index.php:
字符串
然后在该脚本下(我们需要使用两次session_start()):
型
希望这对你有帮助,祝你有美好的一天。
ulmd4ohb5#
根据您的问题:
您可以采用两种方法:
1.使用
HTTP_REFFRER
并检查所需的页面,如果用户来自你想要的页面。如果他正在访问直接URL,然后向他显示错误页面。1.使用
$_SESSION
,但这种方法可能是有害的,因为SESSION
将一直存在,直到浏览器/示例关闭。所以最好是第一种方法。而且根据Pehaa,你不能检查id URL是键入
nmpmafwu6#
如果“HTTP_REFERER”不包括您的服务器,您可以重定向到您的域主页
字符串