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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
PHP通过COM使用ADODB的简单例子
Dec 31 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
php随机取mysql记录方法小结
Dec 27 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
基于swoole实现多人聊天室
Jun 14 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
PHP二维数组分页2种实现方法解析
Jul 09 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
十天学会php之第三天
2006/10/09 PHP
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
Prototype框架详解
2015/11/25 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
python字典DICT类型合并详解
2017/08/17 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python opencv实现运动检测
2018/07/10 Python
广州一家公司的.NET面试题
2016/06/11 面试题
南京某公司笔试题
2013/01/27 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
矿泉水广告词
2014/03/20 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
国际贸易专业求职信
2014/06/04 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书