zl程序教程

您现在的位置是:首页 >  其它

当前栏目

PHPform表单传参明细研究

研究 表单 传参 明细
2023-06-13 09:14:11 时间
为什么呢?因为表单的处理有GET和POST两种,怎么在这两种表单中都要传递一直do参数,而且要在后台通过同样的方式获取就一直是个很困惑的问题,今天经过几个小时的实验终于搞懂了,特发此文。
GET表单:
复制代码代码如下:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
    <metahttp-equiv="Content-Type"content="text/html;charset=gbk"/>
    <title>表单使用GET方式传值</title>
</head>
<body>
    <!--action中的parm参数的值是无法传递到action-get.php的-->
    <formaction="action-get.php?parm=url-get"method="get">
        <p>
            姓名:<inputtype="text"name="name"/>
            <!--隐藏变量传值-->
            <inputtype="hidden"name="hkey"value="hvalue"/>
            <!--GET表单的隐藏变量传值可以通过$_GET["do"]获取-->
            <inputtype="hidden"name="do"value="index"/>
            <!--submit不设置name属性则不会出现在url中-->
            <inputtype="submit"value="提交"/>
        </p>
    </form>
</body>
</html>

处理GET表单的PHP:
复制代码代码如下:

<pre>
<?php
    echo"参数name的值通过\$_GET获取为".$_GET["name"].",";
    echo"参数name的值通过\$_POST获取为".$_POST["name"].",";
    echo"参数name的值通过\$_REQUEST获取为".$_REQUEST["name"].".\r\n";
    echo"参数parm的值通过\$_GET获取为".$_GET["parm"].",";
    echo"参数parm的值通过\$_POST获取为".$_POST["parm"].",";
    echo"参数parm的值通过\$_REQUEST获取为".$_REQUEST["parm"].".\r\n";
    echo"参数hkey的值通过\$_GET获取为".$_GET["hkey"].",";
    echo"参数hkey的值通过\$_POST获取为".$_POST["hkey"].",";
    echo"参数hkey的值通过\$_REQUEST获取为".$_REQUEST["hkey"].".\r\n";
    echo"参数do的值通过\$_GET获取为".$_GET["do"].",";
    echo"参数do的值通过\$_POST获取为".$_POST["do"].",";
    echo"参数do的值通过\$_REQUEST获取为".$_REQUEST["do"].".\r\n";
?>
</pre>

处理结果输出:
参数name的值通过$_GET获取为kj,参数name的值通过$_POST获取为,参数name的值通过$_REQUEST获取为kj.
参数parm的值通过$_GET获取为,参数parm的值通过$_POST获取为,参数parm的值通过$_REQUEST获取为.
参数hkey的值通过$_GET获取为hvalue,参数hkey的值通过$_POST获取为,参数hkey的值通过$_REQUEST获取为hvalue.
参数do的值通过$_GET获取为index,参数do的值通过$_POST获取为,参数do的值通过$_REQUEST获取为index.
POST表单:
复制代码代码如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
    <metahttp-equiv="Content-Type"content="text/html;charset=gbk"/>
    <title>表单使用POST方式传值</title>
</head>
<body>
    <!--action中的parm和do参数可以在action-post.php中通过$_GET方式获取-->
    <formaction="action-post.php?parm=url-post&do=index"method="post">
        <p>
            姓名:<inputtype="text"name="name"/>
            <!--隐藏变量传值-->
            <inputtype="hidden"name="hkey"value="hvalue"/>
            <inputtype="submit"value="提交"/>
        </p>
    </form>
</body>
</html>

处理POST表单的PHP:
复制代码代码如下:
<pre>
<?php
    echo"参数name的值通过\$_GET获取为".$_GET["name"].",";
    echo"参数name的值通过\$_POST获取为".$_POST["name"].",";
    echo"参数name的值通过\$_REQUEST获取为".$_REQUEST["name"].".\r\n";
    echo"参数parm的值通过\$_GET获取为".$_GET["parm"].",";
    echo"参数parm的值通过\$_POST获取为".$_POST["parm"].",";
    echo"参数parm的值通过\$_REQUEST获取为".$_REQUEST["parm"].".\r\n";
    echo"参数hkey的值通过\$_GET获取为".$_GET["hkey"].",";
    echo"参数hkey的值通过\$_POST获取为".$_POST["hkey"].",";
    echo"参数hkey的值通过\$_REQUEST获取为".$_REQUEST["hkey"].".\r\n";
    echo"参数do的值通过\$_GET获取为".$_GET["do"].",";
    echo"参数do的值通过\$_POST获取为".$_POST["do"].",";
    echo"参数do的值通过\$_REQUEST获取为".$_REQUEST["do"].".\r\n";
?>
</pre>

处理结果输出:
参数name的值通过$_GET获取为,参数name的值通过$_POST获取为zkj,参数name的值通过$_REQUEST获取为zkj.
参数parm的值通过$_GET获取为url-post,参数parm的值通过$_POST获取为,参数parm的值通过$_REQUEST获取为url-post.
参数hkey的值通过$_GET获取为,参数hkey的值通过$_POST获取为hvalue,参数hkey的值通过$_REQUEST获取为hvalue.
参数do的值通过$_GET获取为index,参数do的值通过$_POST获取为,参数do的值通过$_REQUEST获取为index.
结论:
  GET表单值可以通过_GET获取;但通过action的url参数设置的参数总是获取不到的
  POST表单值可以通过_POST获取;但通过action的url参数设置的参数则可以通过_GET获取到
  同一变量都可以通过_GET获取,但在GET表单中通过隐藏变量设置,在POST表单中则通过action的url参数设置