我试图完成我的网站并确保用户无法看到任何可能以恶意方式帮助他们或在网站上给他们带来糟糕体验的内容。
所以对于我的网页,例如login.php我检查请求方法,如果它的帖子继续,如果没有那么404等。
但是我有几页从数据库中收集一些信息,我将它们包含在页面中。其中一些非常大/复杂,所以我更喜欢这样做以保持整洁。
如果用户直接访问这些页面而不是仅仅包含这些页面,我该如何将用户重定向到404?
感谢。希望你知道我的意思! :)
答案 0 :(得分:0)
<?php // top file, eg login.php
define('IN_SCRIPT', true);
include('infopage.php');
?>
<?php // included file, eg infopage.php
if (! defined('IN_SCRIPT')) {
// log message, throw header, etc.
// this is a direct access
exit(0);
}
// do whatever
?>
或者,考虑将信息页移出网络可见空间。
答案 1 :(得分:-1)
我认为你可以使用一些简单的技巧。
您想要包含文件,而不仅仅是
include('db.php')
做的:
$including = 'yes';
include('db.php');
并在db.php的第一行:
if (!isset($including)) {
//show 404
exit;
}
//db job
所以它包含了它的工作,如果直接调用则显示404.
<强>可替换地:强>
第一个技巧(和DEFINE)可能更安全,但如果您不想更改包含该文件的每个文件;
就在db.php中:
if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])) {
//show 404
exit;
}
//db job