PHP form 表单传参明细研究


Posted in PHP onJuly 17, 2009

为什么呢?因为表单的处理有GET和POST两种,怎么在这两种表单中都要传递一直do参数,而且要在后台通过同样的方式获取就一直是个很困惑的问题,今天经过几个小时的实验终于搞懂了,特发此文。
GET表单:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=gbk"/> 
    <title>表单使用GET方式传值</title> 
</head> 
<body> 
    <!-- action中的parm参数的值是无法传递到action-get.php的 --> 
    <form action="action-get.php?parm=url-get" method="get"> 
        <p> 
            姓名:<input type="text" name="name" /> 
            <!-- 隐藏变量传值 --> 
            <input type="hidden" name="hkey" value="hvalue" /> 
            <!-- GET表单的隐藏变量传值可以通过$_GET["do"]获取 --> 
            <input type="hidden" name="do" value="index" /> 
            <!-- submit不设置name属性则不会出现在url中 --> 
            <input type="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 表单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=gbk"/> 
    <title>表单使用POST方式传值</title> 
</head> 
<body> 
    <!-- action中的parm和do参数可以在action-post.php中通过$_GET方式获取 --> 
    <form action="action-post.php?parm=url-post&do=index" method="post"> 
        <p> 
            姓名:<input type="text" name="name" /> 
            <!-- 隐藏变量传值 --> 
            <input type="hidden" name="hkey" value="hvalue" /> 
            <input type="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参数设置

PHP 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
PHP4.04简明安装
Oct 09 PHP
用PHP实现多服务器共享SESSION数据的方法
Mar 16 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
PHP闭包(Closure)使用详解
May 02 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
Yii 框架入口脚本示例分析
May 19 PHP
php与php MySQL 之间的关系
Jul 17 #PHP
php 图片上传类代码
Jul 17 #PHP
PHP源码之 ext/mysql扩展部分
Jul 17 #PHP
php 小乘法表实现代码
Jul 16 #PHP
php at(@)符号的用法简介
Jul 11 #PHP
php str_pad 函数用法简介
Jul 11 #PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 #PHP
You might like
PHP注释实例技巧
2008/10/03 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP错误机制知识汇总
2016/03/24 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
JS性能优化笔记搜索整理
2013/08/21 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
详解Python中的各种函数的使用
2015/05/24 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
详解python3中的真值测试
2018/08/13 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
党员干部承诺书范文
2014/03/25 职场文书
妈妈活动方案
2014/08/15 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript