您可以序列化数组,也可以使用大量隐藏的字段。或者,将其存储在会话中。
序列化数组
到serialize,你将只使用一个隐藏的字段。如果您的数组包含非标量数据,这是一个有用的技术。
$data=serialize($order);
$encoded=htmlentities($data);
echo '';
当这个值回来时,你需要使用unserialize来让你的阵列退出。虽然容易,我不会推荐这个,除非你有一些额外的机制来防止篡改,如安全哈希,否则任何人都可以注入他们喜欢的任何PHP数据结构!
哈希可以这样做:
$data=serialize($order);
$encoded=htmlentities($data);
$hash=md5($encoded.'SecretStringHere');
echo '';
echo '';
现在,当数据回来之前,在你排序后,你再次生成哈希,并检查它是否与表单中的哈希值相匹配。如果不匹配,有人篡改了数据。如果它匹配,那么你知道生成的数据也知道你的秘密字符串。哪个应该只是你!
最后,如果JavaScript对于数组数据的理解是有用的,那么使用PHP的JSON encode/decode函数就更合适了。
多个隐藏的字段
假设一个由标量值组成的简单数组,你可以使用很多隐藏的字段
foreach($order as $idx=>$value)
{
$name=htmlentities('order['.$idx.']');
$value=htmlentities($val);
echo '';
}
因为你的数组是二维的,所以要使用这个技术,你将需要一个内部的第二维。为读者练习….
使用会话
也许最简单的三个….
session_start();
$_SESSION['order']=$order;
一旦设置完毕,数组在调用session_start()之后就可以使用了。这样做的优点在于它永远不会离开服务器,但是在一段时间不活动之后当然会消失(默认为24分钟)