我想知道,有我在不同的目录保存在根目录之外的几个文件,我试图用一个HTML表单张贴的信息来,坐在OUTSIDE根目录下的PHP文件
那可能吗? 如果是这样,怎么样?
我想知道,有我在不同的目录保存在根目录之外的几个文件,我试图用一个HTML表单张贴的信息来,坐在OUTSIDE根目录下的PHP文件
那可能吗? 如果是这样,怎么样?
做一个代理脚本...什么是网站目录内,但它是所有包含适当的“保护”的文件:
DOCROOT / form_handler.php
<?php
include "../secret/form_handler.php";
DOCROOT / form.html
...
<form action="form_handler.php">
...
这,其实多少网站设置(本质上至少)。 这是典型的地方最喜欢这个DOCROOT外的脚本在罕见的情况下Apache或类似的不分析你的PHP(即,如果它是配置错误),它不会在不经意间把你的源代码。
在我的网站上,各种形式的我开始有这样的代码:
<form action="action" method="post">
<input type="hidden" name="i-action" value="do-whatever" />
这避免了需要多个代理脚本,因为action.php
会使用隐藏字段的值,以确定哪些PHP文件应该被调用。 不要调用隐藏字段action
,如果您发布使用Ajax的形式,因为它可能会导致冲突。 另外,我已经设置了.htaccess
文件来删除PHP扩展,所以你可能需要添加.php
到action
中的HTML代码。
下面是action.php
:
if (!empty($_POST['i-action']))
{
$action = str_replace('.', '', $_POST['i-action']);
$action = str_replace('/', '', $action);
if (file_exists("../secret/directory/structure/$action".'.php'))
require_once("../secret/directory/structure/$action".'.php');
}
我用str_replace
,以确保黑客无法穿越到不同的目录。
是的,它是更多钞票。 该目录应该被托管作为单独的网站,然后你可以把该文件作为表单动作的绝对URL
该文件必须是从网上入店。
如果“根外”目录指的DocumentRoot之外,这不会是可能的。
你可以在DocumentRoot的一个基本的控制器,包括或将分派的动作。