阻止直接html访问包含php脚本的文件夹

时间:2012-12-14 23:31:53

标签: php .htaccess

我有访问mysql的php脚本。我把它们放在一个文件夹(SourceFiles)中。我想确保用户不能直接指向任何这些脚本(因此也就是mysql数据库)。我有一个访问这些脚本的登录设置,一切正常,但用户也可以直接指向文件。

将文件夹移动到public_html以上是行不通的,因为我无法发布到public_html之外的脚本。

使用.htaccess保护文件夹不起作用,因为每个用户都需要访问受保护的文件夹。

如何确保用户只能通过登录访问该文件夹中的php脚本(我目前在php中编码)。

3 个答案:

答案 0 :(得分:0)

我个人投出额外的POSTGET

$protected = ($_GET['p']) ? $_GET['p'] : $_POST['p']
if ($protected != 'a') { header('location:blah'); }  

在受保护的网页顶部有这样的内容。

Next Time Use This

答案 1 :(得分:0)

这是我在OOP php之前做到的。

在主要应用程序入口点:

define('ACCESS',1);

在所有受保护的脚本上:

if (!defined(ACCESS)) exit;

因此,如果用户直接访问您的任何受保护的'文件,他们不会被执行。

修改

我看到你已经制作了登录系统.....为什么不立即使用呢?存储在$ _SESSION var中,该var定义是否允许用户访问该脚本.....

答案 2 :(得分:0)

您可以将此代码放在每个文件的头部:

/***************DO NOT ALLOW DIRECT ACCESS************************************/
if ( (strpos( strtolower( $_SERVER[ 'SCRIPT_NAME' ] ), strtolower( basename( __FILE__ ) ) ) ) !== FALSE ) { // NOT FALSE if the script's file name is found in the URL 
  header( 'HTTP/1.0 403 Forbidden' );
  die( '<h2>Direct access to this page is not allowed.</h2>' );
}
/*****************************************************************************/