2014-09-03 35 views
0

我想知道是否有方法來讀取或提取從PHP中的表單標籤的操作參數的值? <form name="..." method="post" action="*this*">是否可以使用php讀取表單的動作值?

此代碼返回表單內的每個元素的每個值,但不能從form - 標籤本身:

foreach($_POST as $_FORM_value){ 
    $_FORM_values[] = $_FORM_value; 
} 

任何想法?

現在,我只是用一個隱藏字段來執行正確的腳本:

<input type="hidden" name="load-script" value="ScriptName" readonly> 

,並在極頂,前HTA頁開始加載任何HTML被髮送到客戶端,我米檢查瑟如果任何形式已經submittet:

if(isset($_POST['load-script'])){include dir_setup.'post.exec.php';} 

而且裏面post.exec.php

# get name from submit-button 
    foreach($_POST as $_FORM_ELEMENT_name=>$_FORM_ELEMENT_value){ 
     if (!strncmp($_FORM_ELEMENT_name,'submit_',7)){ 
      $_FORM_ELEMENT_submit_name=explode('_',$_FORM_ELEMENT_name); 
      $_FORM_name=$_FORM_ELEMENT_submit_name[1]; 
     } 
    } 
// 
# fetch script 
    if(empty($_POST['load-script'])){ 
     $_SITE_notices[] = '<code><b>load-script</b></code> in <code><b>'.$_FORM_name.'</b></code> is empty.'; 
    }else{ 
     $_FORM_SCRIPT=$_POST['load-script'].'.script.php'; // script to search for. 
     if(file_exists(dir_scripts.$_FORM_SCRIPT)){ // check locally first. 
      include dir_scripts.$_FORM_SCRIPT; // include script from local folder - if found. 
     }else{ // script was not found locally. 
      if($_SITE_FRAMEWORK){ 
       if(file_exists(ROOT_FRAMEWORK.dir_scripts.$_FORM_SCRIPT)){ // check framework. 
        include ROOT_FRAMEWORK.dir_scripts.$_FORM_SCRIPT; // include script from framework - if found. 
       }else{ // script was not found in either directory; quit searching and throw error. 
        $_SITE_notices[] = 'Could not locate <code><b>'.$_FORM_SCRIPT.'</b></code> in either <code><small>&lt;ROOT&gt;</small><b>/'.dir_scripts.'</b></code> or <code><small>&lt;FRAMEWORK&gt;</small><b>/'.dir_scripts.'</b></code>'; 
       } 
      }else{ // framework is not activated; quit searching and throw error. 
       $_SITE_notices[] = 'Could not locate <code><b>'.$_FORM_SCRIPT.'</b></code> in <code><small>&lt;ROOT&gt;</small><b>/'.dir_scripts.'</b></code>'; 
      } 
     } 
    } 
// 

我的想法是消除對隱藏的加載腳本元素的需求,並使用表單操作值來阻止加載哪個腳本。但那可能不可能?

回答

1

action定義了要調用的腳本的url。因此,您可以在一些$_SERVER變量中看到所有操作的詳細信息 - 也許$_SERVER['PHP_SELF']$_SERVER['QUERY_STRING']將對您有用。

+0

不要太挑剔 - 但這些價值正是Apache「看到」的。兩者都可能被HTTP重定向,重寫規則或什麼東西所改變。不能保證這些值與原始HTML字段相對應。 – 2014-09-03 23:41:33

+0

你是對的,他們肯定會*不*包含'action =「...」'中的字符串。 ThomasK想要「使用表單動作值來阻止腳本加載」,也許他會發現'$ _SERVER [something]'足夠有用。 – 2014-09-03 23:46:07

相關問題