2014-09-03 33 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

相关问题