PHP,通过 POST 传递数组

2022-08-30 17:23:27

哪种方式是发送数组的最安全方式?POST

foreach ($id as $array)
{
<input type="hidden" name="prova[]" value="<?php echo $array; ?>"/>
}
<input type="submit" name="submit"/>

或者用于创建单个变量,传递变量,然后用于将值取回新数组?implode()explode()


答案 1

编辑如果您要询问安全性,请参阅底部的附录 编辑

PHP 具有为此特定目的提供的序列化函数。向它传递一个数组,它将为您提供它的字符串表示形式。如果要将其转换回数组,只需使用反序列化函数即可。

$data = array('one'=>1, 'two'=>2, 'three'=>33);
$dataString = serialize($data);
//send elsewhere
$data = unserialize($dataString);

这通常被懒惰的编码人员用来将数据保存到数据库中。不推荐,但可以作为快速/肮脏的解决方案。

补遗

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


答案 2

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

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

<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'),
)
?>

名称标记可以用作数组。