繁体   English   中英

是否有可能用php读取表单的操作值?

[英]is it possible to read the action value of a form with php?

我想知道是否有一种方法可以读取或提取php中表单标签的动作参数值? <form name="..." method="post" action="*this*">

这段代码返回表单内每个元素的每个值,但不是从form -tag本身返回:

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

有任何想法吗?

现在,我只是使用一个隐藏字段来执行正确的脚本:

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

最重要的是,在hta页开始加载并将任何html发送到客户端之前,我正在检查是否已提交任何表单:

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>';
            }
        }
    }
//

我的想法是消除对隐藏的load-script元素的需要,仅使用form action值确定要加载的脚本。 但这可能不可能吗?

action定义了要调用的脚本的URL。 因此,您可以在某些$_SERVER变量中查看所有操作的详细信息-也许$_SERVER['PHP_SELF']$_SERVER['QUERY_STRING']对您很有用。

不,就其定义提交表单只序列中的所有值form问题,并将由定义的那些服务器的method 在PHP中,您可以使用以下命令检查回发中的内容:

var_dump($_POST);     // assuming POST method

HTML不会返回任何其他数据。

在此处可以找到HTML5标准中的相关部分 ,尤其是表单数据集的构造逻辑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM