我想知道,有我在不同的目录保存在根目录之外的几个文件,我试图用一个HTML表单张贴信息到位于OUTSIDE根目录在根目录之外使用php文件的HTML表单操作?
是一个PHP文件那可能吗?如果是这样,怎么样?
我想知道,有我在不同的目录保存在根目录之外的几个文件,我试图用一个HTML表单张贴信息到位于OUTSIDE根目录在根目录之外使用php文件的HTML表单操作?
是一个PHP文件那可能吗?如果是这样,怎么样?
做一个代理脚本...这东西是的 web目录里面,但它是所有包含适当的 “保护” 文件:
DOCROOT/form_handler.php
<?php
include "../secret/form_handler.php";
DOCROOT/form.html
...
<form action="form_handler.php">
...
事实上,这是设置了多少个网站(本质上至少)。在这种罕见的情况下,将Apache的大部分脚本放在DOCROOT之外是很常见的情况,即在Apache或类似文件不解析PHP的情况下(即,如果配置错误),它不会无意中发送源代码。
在我的网站上,各种形式的我开始使用此代码:
<form action="action" method="post">
<input type="hidden" name="i-action" value="do-whatever" />
这避免了需要多个代理脚本,因为action.php
会使用隐藏字段的值,以确定哪些PHP文件应该被调用。如果您使用Ajax发布表单,请勿调用隐藏字段action
,因为它可能会导致冲突。此外,我已将.htaccess
文件设置为删除php扩展名,因此您可能需要在HTML代码中将.php
添加到action
。
这里是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
,以确保黑客无法穿越到不同的目录。
我该如何使用HTML表单发布到那个呢? – Kalcoder 2012-07-09 07:37:46
@Kalcoder:您需要创建一个可从'public_html'目录中看到的文件,然后将表单发布到该目录。要让文件在webroot之外执行的唯一方法是将其包含在webroot中的文件中。 - 或者可能有一些花哨的网络服务器配置。 – Leigh 2012-07-09 07:41:11
好点@Leigh,这*是可能的mod_rewrite(替换可以是文件系统路径)。如果你有兴趣,你应该提交作为答案:-) – 2012-07-09 07:51:00