1
Sunyanzi 2015-10-26 21:25:42 +08:00 1
参考 http://php.net/extract ... 但慎用这个功能因为用户的输入永远是不可信的 ...
|
2
cxbig 2015-10-26 21:31:15 +08:00
不要用 extract !不要用 extract !不要用 extract !
|
3
Exin OP @Sunyanzi 因为按网页设计 post 的内容是一个表格,所有的 key 已经给定,所以相对还是安全的吧
不过如果不是网页提交,而是恶意 post 一堆数据那是有点囧了。 还好是内部使用的,应该没问题。 |
5
Exin OP 似乎不能 append 。
换个问题吧: 最优雅的批量获取 post 里面指定 key 的 value 的方法是什么? |
6
cxbig 2015-10-26 21:49:08 +08:00
Post 是个很讲究安全的东西,我建议你至少用一个标准的类来处理。
你要这样想,如果有人 Post 过来的东西是_GLOBAL 这样的东西你怎么办,如果他知道你这个项目大概会用到什么参数,通过 Post 加塞危险的东西覆盖了你本地的变量 |
8
qiayue 2015-10-26 21:53:47 +08:00
要什么取什么,取出来之后再变成本地变量
|
10
cxbig 2015-10-26 21:57:39 +08:00 1
@Exin 是不是公开的接口都不要用,我建议你参考一下 Ruby on Rails 4.x 和 Laravel 的安全解决方案。
顶层类准备反射 getter 和 value 的安全性过滤,实际的 controller 继承了以后,定义个需要获取的 key 的 Array ,然后当 Post 进来以后__constract 之类的函数就会自动根据你的 Array 处理好所有的 parameter ,你可以直接用: $this->getRequest()->getParam('key1'); $this->getRequest()->getParam('key2'); ... |
11
qiayue 2015-10-26 22:05:58 +08:00
封装一个方法,传一个数组进去,方法内循环数组取数据,返回数据数组。
|
13
zakokun 2015-10-26 22:41:01 +08:00
你自己封装一个函数就是了,传进来 post,你将其转换成对应的格式.这已经很优雅了
你想直接把用户 post 过来的东西 extract,这当然是不可以的了,一切外部输入的东西都不可信是常识 |
14
jarlyyn 2015-10-26 22:43:57 +08:00
|
16
jarlyyn 2015-10-26 22:46:52 +08:00
另外,觉得你的问题有两个地方。
1.没有把所有网页的操作看成一个个的 Request 和 response 。不论是前端还是后台,说明你都没进入正确的思考模式。 2.没有使用 form 类 /处理函数。先不说安全性的问题。只要网站规模稍微大点,调整各种 from 就要去各个入口找,太痛苦了。 |
18
jarlyyn 2015-10-26 22:56:56 +08:00
|
20
txlty 2015-10-26 23:15:06 +08:00
我曾经这么用过。应该就是你想要的。
function all_post(){ foreach($_POST as $key => $val){ global $$key; $$key = $val; } } |
22
txlty 2015-10-26 23:20:56 +08:00
你指的是这样?这俩也是我曾经用过的。
function getget($str){ $array=explode(',',$str); foreach($array as $val){ global $$val; $$val=trim($_GET[$val]); } } function getpost($str){ $array=explode(',',$str); foreach($array as $val){ global $$val; $$val=trim($_POST[$val]); } } 使用方式,逗号分隔。 getget('k1,k2,k3'); echo $k1.$k2.$k3; |
23
quericy 2015-10-26 23:40:41 +08:00
|