Home > Backend Development > PHP Tutorial > php提交post数组参数实例分析_PHP

php提交post数组参数实例分析_PHP

WBOY
Release: 2016-05-28 13:13:13
Original
876 people have browsed it

本文实例分析了php提交post数组参数的用法。分享给大家供大家参考,具体如下:

首先php中要想从页面传送数组到服务端a,要在页面上多个空间同名,而且对于名称有要求,那就是 name="aa[ ]",注意这里要多加一个数组的符号,这样才能在服务端a取到

代码如下:

$_POST[aa]


得到的为数组。

更深一层的问题是,假设我现在需要对post中的参数进行处理后,再传送给另外一个服务端,对于参数aa,应该怎么传递呢?

如果不做什么处理,拼装完post请求后,服务端b获取到的永远只是Array,无法取到实际值。

现在的解决方案是:现在服务端a进行序列化,然后在服务端b接收后进行反序列化。这样反序列化后的值就是一个数组了,和a段获取到的一样。

代码如下:

$_POST["aa"] =serialize($_POST[aa]);


反序列化

$a = "a:2:{i:0;s:1:\"1\";i:1;s:1:\"2\";}";
var_dump(unserialize($a));

Copy after login

结果是什么呢:

array(2) {
 [0]=>
 string(1) "1"
 [1]=>
 string(1) "2"
}

Copy after login

而在post中获取到的序列化后的参数是有进行添加过转义符的,获取后需要去掉,然后才能反序列化成功

$bb = $_POST["aa"];
$bb = str_replace("\\", '', $bb);
var_dump(unserialize($a));

Copy after login

好了,这样才是你要的结果。

当然,还有一种问题是,你可以直接把数组值传递给页面的某一空间,提交给服务端。这种情况同样需要序列化和反序列化。

页面

<input type="hidden" name="aa" value="<&#63;php echo base64_encode(serialize($array));&#63;>" />
var_dump(base64_decode(unserialize(<pre class="html" name="code">{1}
Copy after login

POST['post_data'])));

不知道加了这个base64_encode有什么作用,貌似是给中文编码的吧? 

希望本文所述对大家php程序设计有所帮助。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template