【发布时间】:2019-09-28 20:34:21
【问题描述】:
您好,对于我正在设计的网站,我被要求使用 mal 的电子商务作为支付网关。我一直在尝试设置他们拥有的远程呼叫功能,以便在购买后它会回电到我的网站以运行脚本并发送电子邮件确认他们的订单。
然而,事实证明这非常令人沮丧,因为我存储的会话变量不会通过远程调用传递,只有它们允许的某些值。
我尝试将它们全部存储在一个数组中,并将它们放入我可以更改的值之一,称为 sd:
$cart =array($_SESSION["date"], $_SESSION["name"], $_SESSION["email"], $_SESSION["number"], $_SESSION["address"], $_SESSION["town"], $_SESSION["postcode"],
$_SESSION["county"], $_SESSION["cake_type"], $_SESSION["collection"], $_SESSION["icingColour"], $_SESSION["trimColour"], $_SESSION["filling"], $_SESSION["wording"],
$_SESSION["cakePhoto"], $_SESSION["price"], $_SESSION["photo"] );
<input type="hidden" name="sd" value="<?php echo $cart?>">
然后在我的脚本中我尝试了:
$result = $_POST['sd']; 回声 $result[0];
测试一下
但是远程调用只是将值作为“Array”传递,所以 echo $result[0] 只是返回了“A”,这些值只是作为 Array 传递的,并且数组中的任何值都没有被传递。
所以现在我尝试将所有会话变量存储在 sd 值中,如下所示:
<input type="hidden" name="sd" value="<?php foreach ($_SESSION as $key=>$val) { echo $val;}?>">
然后我通过在我的脚本上进行测试:
$result = $_POST['sd'];
echo $result;
现在这确实传递了所有值,但显然只是一个大值,有没有办法可以将它们分开?我没有想到的数组有更好的方法吗?任何建议将不胜感激,因为我完全不知所措
编辑:
忘记添加这部分了:
因此,在拆分数组后,我需要单独存储这些值,例如:
$name = 第一个值 $email = 第二个值等
【问题讨论】:
-
副本有很多实现这个结果的好方法。
-
我已经添加了更多,因为我需要的不是重复我不认为,我知道如何获取值,然后我需要能够再次单独存储它们
-
如果您使用(例如)第二个答案中的
json_encode方法,则可以使用json_decode重新创建原始$cart数组。就我个人而言,我会使用关联数组来更轻松地获取值,例如$cart =array('date' => $_SESSION["date"], 'name' => $_SESSION["name"], 'email' => $_SESSION["email"], ...); -
好的,谢谢,我会试试的
-
您好,我只想说使用 json 编码和解码效果很好,感谢您的建议!让这项工作得到巨大的缓解