我正在尝试将数组发送到另一个页面.
我以前尝试过的是:
第1页
<input type='hidden' name='input_name' value='<?php print_r($array_name); ?>' />
Run Code Online (Sandbox Code Playgroud)
和page2
<?php
$passed_array = $_POST['input_name'];
?>
Run Code Online (Sandbox Code Playgroud)
现在我如何使$passed_array行为像一个数组?
或者你知道解决这个问题的其他方法吗?
谢谢,迈克.
编辑:我想这样做的原因是因为我需要避免会话和cookie.
Gre*_*reg 44
你可以把它放在会话中:
session_start();
$_SESSION['array_name'] = $array_name;
Run Code Online (Sandbox Code Playgroud)
<input type='hidden' name='input_name' value="<?php echo htmlentities(serialize($array_name)); ?>" />
$passed_array = unserialize($_POST['input_name']);
Run Code Online (Sandbox Code Playgroud)
会话的优点是客户端看不到它(因此无法篡改它),如果数组很大,它会更快.缺点是,如果用户打开了多个标签,可能会感到困惑.
编辑:很多答案都建议使用name="input_name[]".这在一般情况下不起作用 - 需要修改它以支持关联数组,并进行大量修改以支持多维数组(icky!).坚持序列化要好得多.
当数组中的某些值包含换行符时,我在上述示例中遇到了一些问题。我的一些价值观也有来自外语的字符,这些字符htmlentities一直搞砸。以下是我的解决方案。
在您想要从中传递数组的页面中...
<INPUT TYPE="hidden" NAME="input_name" VALUE="<?= base64_encode(serialize($array_name)); ?>">
Run Code Online (Sandbox Code Playgroud)
在接收数组的页面中...
$array = unserialize(base64_decode($_POST["input_name"]));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86442 次 |
| 最近记录: |