通过 "POST "发送数组的最安全方法是什么?
foreach ($id as $array)
{
<input type="hidden" name="prova[]" value="<?php echo $array; ?>"/>
}
<input type="submit" name="submit"/>
还是使用implode()
创建一个变量,传递该变量,然后使用explode()
将值返回到一个新数组?
***如果你问的是安全问题,请参阅我在底部的附录。
PHP 提供了一个 serialize 函数用于这一特定目的。向它传递一个数组,它就会给出一个字符串表示。当你想把它转换回数组时,只需使用 unserialize 函数。
$data = array('one'=>1, 'two'=>2, 'three'=>33);
$dataString = serialize($data);
//send elsewhere
$data = unserialize($dataString);
懒惰的程序员通常使用这种方法将数据保存到数据库。不推荐使用,但可以作为一种快速、简便的解决方案。
*附录**
我的印象是,你在寻找一种可靠而不是安全地发送数据的方法。无论你以何种方式传输数据,如果数据是通过用户系统传输的,你就根本无法信任它。一般来说,你应该把数据存储在服务器上的某个地方;使用凭证(cookie、会话、密码等)来查找数据。
你可以把它放在会话中:
session_start();
$_SESSION['array_name'] = $array_name;
或者,如果您想通过表单发送,也可以将其序列化:
<input type='hidden' name='input_name' value="<?php echo htmlentities(serialize($array_name)); ?>" />
$passed_array = unserialize($_POST['input_name']);
请注意,要使用序列化数组,需要使用 POST 作为表单的传输方式,因为 GET 的大小限制在 1024 个字符左右。
我会尽可能使用会话。