簡體   English   中英

使用根目錄外的php文件的HTML表單操作?

[英]HTML form action using a php file outside of root directory?

我想知道,有一些文件我保存在根目錄之外的不同目錄中,我試圖使用HTML表單將信息發布到位於根目錄外的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文件。 如果您使用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來確保黑客無法遍歷不同的目錄。

是的,它是可行的。 該目錄應作為單獨的站點托管,然后您可以將該文件的絕對URL作為表單操作

該文件必須可從Web訪問。
如果“Root之外”目錄意味着在DocumentRoot之外,那么這是不可能的。

你可以在DocumentRoot中有一個基本的Controller,它包含或調度動作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM