深入介绍PHP中各种各样的接参形式
发布时间:2022-08-03 15:50:13 所属栏目:PHP教程 来源:互联网
导读:本篇文章带大家了解一下PHP中接收外部参数的几种方式,希望对大家有所帮助! 对于PHP这样一个web语言来说,接参是非常重要的一个能力。毕竟从前端表单或异步请求传递上来的数据都要获取到才能进行正常的交互展示。当然,这也是所有能够进行web开发的语言的必
本篇文章带大家了解一下PHP中接收外部参数的几种方式,希望对大家有所帮助! 对于PHP这样一个web语言来说,接参是非常重要的一个能力。毕竟从前端表单或异步请求传递上来的数据都要获取到才能进行正常的交互展示。当然,这也是所有能够进行web开发的语言的必备能力。今天我们就来看看PHP各种各样的接参形式。 首先,我们要准备一个静态页面,就像下面这个一样,它提供了一个表单,同时url里还带有一个GET参数: <form action="?show=1" method="post"> 姓名:<input type="text" name="name"/><br /> 电话:<input type="text" name="tel"/><br/> 地址(省):<input type="text" name="address.prov"/><br/> 地址(市):<input type="text" name="address city"/><br/> 兴趣1:<input type="text" name="interest[]"/><br/> 兴趣2:<input type="text" name="interest[]"/><br/> 兴趣3:<input type="text" name="interest[]"/><br/> 学历1:<input type="text" name="edu[one]"/><br/> 学历2:<input type="text" name="edu[two]"/><br/> <input type="submit" value="提交" > </form> </body> </html> 正常的_GET、GET、_POST方式 // 正常的GET、POST echo $_GET['show'], '<br/>'; // 1 echo $_POST['name'], '<br/>'; // 提交的内容 这是最基础的也是最直接的接参方式,GET参数通过 _GET 获取,POST参数通过GET获取,POST参数通过_POST 获取,互相都不干扰。 正常的$_REQUEST方式 // 使用REQUEST echo $_REQUEST['show'], '<br/>'; // 1 echo $_REQUEST['tel'], '<br/>'; // 提交的内容 _REQUEST 则是获取所有请求中的参数,不包括上传文件。也就是说,它包含了REQUEST则是获取所有请求中的参数,不包括上传文件。也就是说,它包含了_GET 、 _POST 以及POST以及_COOKIE(需要配置,默认不包含) 这三个接参变量中的所有内容。这里需要注意的一点是,PHP5.3以后, $_REQUEST 接受的参数变量内容由 php.ini 文件中的 request_order 指定,默认情况下这个配置参数的值是 GP 也就是 GET 和 POST ,并没有 COOKIE ,想要 COOKIE 的话需要修改这里添加一个C就可以了。 如果 _GET 、GET、_POST 中有同名的内容呢? $_REQUEST 展示的顺序也是根据这配置参数的顺序来的,从左至右,后面的覆盖前面的,比如你配置的是GP 那么参数覆盖的顺序是: POST > GET,最终显示的就是 POST 中的内容。 register_globals问题 // register_globals 如果打开 import_request_variables extract($_POST, EXTR_PREFIX_ALL, 'ex'); echo $ex_name, '<br/>'; // 提交的内容 echo $ex_tel, '<br/>'; // 提交的内容 extract 是目前可以代替上面两种参数转变量的方式中目前依然支持的。它是由我们自己来控制对已存在变量的覆盖的,也就是第二个参数,这样在可控的环境下可以极大地避免污染全局变量的问题,当然前提还是我们自己要确定使用它,具体内容可以自行查找文档参考哦! 参数名中的.和空格 // 参数名中的.和空格 echo $_REQUEST['address_prov'], '<br/>'; // 提交的内容 echo $_REQUEST['address_city'], '<br/>'; // 提交的内容 // 参数名中的[] print_r($_REQUEST['interest']); // Array (v,....) echo '<br />'; print_r($_REQUEST['edu']); // Array (k/v,....) 当表单提交的 input 的 name 是数组形式的,也就是 "interest[]" 或 "edu[one]" 这种形式时,我们接收到的参数默认就会成为一个数组形式的内容。 print_r($content); //name=xxx&..... 最后就是现在接口开发中经常会使用的 php://input 形式接参。一般是因为安全或参数字段较多的情况下,前端通过 Body Raw 的形式直接传递一整段的 Body 内容过来。这时候就只能用这种形式获取到了,这个 Body Raw 的原始内容一般会是一整段的文字,也有可能是进行过一些加密处理的内容,格式可以自己定义。而面对普通表单,我们将会接收到的也是原始的表单内容,就像上面的 name=xxx&tel=xxx&.... 这样的内容。 需要注意的是 enctype="multipart/form-data" 时它是无法获取到内容的。同时,这种方式也是代替 $HTTP_RAW_POST_DATA 全局变量的,不要再使用淘汰的能力了哦,尽早更新新版本的PHP使用新的语法特性哦! 总结 随便一整理就发现原来简简单单的一个接参就有这么多种形式和需要注意的地方,还真是大开眼界。依然是那句话,学无止尽,继续深入的钻研早晚你也会成为大牛! (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |