首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP,通过POST传递数组

问PHP,通过POST传递数组
EN

Stack Overflow用户
提问于 2012-12-28 23:13:07
回答 5查看 153.8K关注 0票数 22

通过POST发送数组最安全的方式是什么

代码语言:javascript
复制
foreach ($id as $array)
{
<input type="hidden" name="prova[]" value="<?php echo $array; ?>"/>
}
<input type="submit" name="submit"/>

或者使用implode()创建单个变量,传递变量,然后使用explode()将值返回到新的数组中?

EN

回答 5

Stack Overflow用户

发布于 2012-12-28 23:20:23

编辑如果您想了解有关安全性的问题,请参阅底部编辑中的附录

PHP提供了一个用于此特定目的的serialize函数。向它传递一个数组,它将为您提供该数组的字符串表示。当您想要将其转换回数组时,只需使用unserialize函数。

代码语言:javascript
复制
$data = array('one'=>1, 'two'=>2, 'three'=>33);
$dataString = serialize($data);
//send elsewhere
$data = unserialize($dataString);

这通常被懒惰的程序员用来将数据保存到数据库中。不推荐使用,但可以作为快速/粗糙的解决方案。

附录

我的印象是,您正在寻找一种可靠的方式发送数据,而不是“安全”。无论您如何传递数据,如果它是通过用户系统传递的,那么您根本不能信任它。通常,您应该将其存储在服务器上的某个位置&使用凭据(cookie、会话、密码等)来查找它。

票数 30
EN

Stack Overflow用户

发布于 2015-03-23 19:07:48

http://php.net/manual/en/reserved.variables.post.php

第一条评论回答了这个问题。

代码语言:javascript
复制
<form ....>
<input name="person[0][first_name]" value="john" />
<input name="person[0][last_name]" value="smith" />
...
<input name="person[1][first_name]" value="jane" />
<input name="person[1][last_name]" value="jones" />
</form>

<?php
var_dump($_POST['person']);

array (
0 => array('first_name'=>'john','last_name'=>'smith'),
1 => array('first_name'=>'jane','last_name'=>'jones'),
)
?>

name标记可以作为数组工作。

票数 18
EN

Stack Overflow用户

发布于 2012-12-28 23:24:13

您可以将其放入会话中:

代码语言:javascript
复制
session_start();
$_SESSION['array_name'] = $array_name;

或者,如果你想通过表单发送它,你可以序列化它:

代码语言:javascript
复制
<input type='hidden' name='input_name' value="<?php echo htmlentities(serialize($array_name)); ?>" />

$passed_array = unserialize($_POST['input_name']);

请注意,要使用序列化的数组,需要使用POST作为表单的传输方法,因为GET的大小限制在1024个字符左右。

只要可能,我都会使用会话。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14071587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档