使用PHP文件根目录以外的HTML表单动作?(HTML form action using a ph

2019-06-26 03:54发布

我想知道,有我在不同的目录保存在根目录之外的几个文件,我试图用一个HTML表单张贴的信息来,坐在OUTSIDE根目录下的PHP文件

那可能吗? 如果是这样,怎么样?

Answer 1:

做一个代理脚本...什么网站目录内,但它是所有包含适当的“保护”的文件:

DOCROOT / form_handler.php

<?php
include "../secret/form_handler.php";

DOCROOT / form.html

...
<form action="form_handler.php">
...

这,其实多少网站设置(本质上至少)。 这是典型的地方最喜欢这个DOCROOT外的脚本在罕见的情况下Apache或类似的不分析你的PHP(即,如果它是配置错误),它不会在不经意间把你的源代码。



Answer 2:

在我的网站上,各种形式的我开始有这样的代码:

<form action="action" method="post">
    <input type="hidden" name="i-action" value="do-whatever" />

这避免了需要多个代理脚本,因为action.php会使用隐藏字段的值,以确定哪些PHP文件应该被调用。 不要调用隐藏字段action ,如果您发布使用Ajax的形式,因为它可能会导致冲突。 另外,我已经设置了.htaccess文件来删除PHP扩展,所以你可能需要添加.phpaction中的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 ,以确保黑客无法穿越到不同的目录。



Answer 3:

是的,它是更多钞票。 该目录应该被托管作为单独的网站,然后你可以把该文件作为表单动作的绝对URL



Answer 4:

该文件必须是从网上入店。
如果“根外”目录指的DocumentRoot之外,这不会是可能的。

你可以在DocumentRoot的一个基本的控制器,包括或将分派的动作。



文章来源: HTML form action using a php file outside of root directory?