php hidden 传递数组,php – 如何通过隐藏字段传递数组

您可以序列化数组,也可以使用大量隐藏的字段。或者,将其存储在会话中。

序列化数组

到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分钟)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值