嘿伙计们,我将一些XHTML与PHP分开,将XHTML放入一个单独的文件中,然后在PHP脚本中使用PHP的include()
函数。
这非常合适,但是,如果用户知道地址,他们仍然可以直接访问.html
文件。他们无法真正做到这一点,但我宁愿不显示。
我以前看过一些脚本使用某种形式的引用来检查,这是我要做的就是添加一些基本的(通知我说'基本')限制以防止它被通过直接访问来查看?
谢谢!
澄清:我忘了提到我想在PHP中执行此操作,因此没有Web服务器配置(将文件移出document-root,配置web-server以禁止访问等等。)。我认为这里最合乎逻辑的选择是使用define()
常量检查,这实际上确实是我在其他我忘记过的脚本中看到的,正如我在帖子中所概述的那样。我意识到这可能不是最好的解决方案,但鉴于可以访问的html文件没有特别的价值,define()
常量应该足够了。谢谢,我很感激你的回复!
答案 0 :(得分:3)
只需将其移出文档根目录即可。如果PHP处于安全模式,这将无效。
答案 1 :(得分:3)
更改您的网络服务器配置以禁止访问该文件?
答案 2 :(得分:3)
不,做这样的事情:
<强>的index.php:强>
<?php
define('ALLOW_INCLUDE', true);
include('other.php');
?>
<强> other.php:强>
<?php
if (defined('ALLOW_INCLUDE') === false) die('no direct access!');
// your code
?>
答案 3 :(得分:3)
如果您目前将所有文件(例如index.php)放在/something/public_html/
中,则需要将文件移至/something/
。这样用户就无法访问这些文件。
/public_html/
称为您的文档根目录。该文件夹映射到example.com
,基本上网站从那里开始。如果您将文件移动到网站启动的上方,则没有人可以通过浏览器访问这些文件。
正如Ignacio所说,如果启用了安全模式,这将不适用于include
。
其他方法是在文件顶部放置一些内容
if(!defined("RUNNING_SCRIPT"))
die("No Direct Access Allowed");
然后在你的PHP文件中放
define("RUNNING_SCRIPT", true);
如果未定义RUNNING_SCRIPT
,则表示他们正在直接访问它,并且会阻止加载页面。这只适用于PHP在.html
文件上运行的情况。
您还可以使用.htaccess
文件禁止访问该文件夹。
答案 4 :(得分:1)
将此作为第一行是个好主意。
您也可以使用.htaccess或删除index.html页面作为后备。
<?php defined('SOME_CONSTANT_GLOBAL_TO_YOUR_APP') or die('Access denied.'); ?>
答案 5 :(得分:0)
可能是apache访问控制? http://httpd.apache.org/docs/2.2/howto/access.html