嗨,对于我正在设计的网站,我被要求使用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];
来测试它
但是远程调用只是将值作为"数组"传递,因此回显$result[0]只是返回"A",这些值只是作为数组传递,数组中的任何值都没有随之传递。
所以现在我尝试将所有会话变量存储在 sd 值中,如下所示:
<input type="hidden" name="sd" value="<?php foreach ($_SESSION as $key=>$val) { echo $val;}?>">
然后我通过在我的脚本上进行测试:
$result = $_POST['sd'];
echo $result;
现在这确实传递了所有值,但显然只是一个大值,有没有办法将它们拆分?有没有更好的方法来处理我没有想到的数组?任何建议将不胜感激,因为我完全不知所措
编辑:
忘了添加这部分:
因此,在数组拆分后,我需要单独存储值,如下所示:
$name = 第一个值 $email = 第二个值等
尝试将<input type="hidden" name="sd" value="<?php echo $cart?
>更改为
<input type="hidden" name="sd[]" value="<?php echo $cart?>
或使用serialize()
然后unserialize()
结果。
请参阅使用 HTML 表单隐藏元素传递数组
您可以使用phpimplode
和explode
函数。
第一部分是内爆。
我们使用;
作为内爆分度计,它使用该内爆计将数组元素连接为单个字符串。
<input type="hidden" name="sd" value="<?php foreach ($_SESSION as $key=>$val) { echo $val.';';}?>">
Explode 使用我们传递的分度仪再次将该字符串转换为数组。
foreach (explode(';', $_REQUEST["sd"]) as $key) {
echo $key;
echo "<br>";
}
更新:试试这个
<input type="hidden" name="sd" value="<?php foreach ($_SESSION as $key=>$val) { echo $key.';'.$val.';;';}?>">
Explode 使用我们传递的分度仪再次将该字符串转换为数组。
foreach (explode(';;', $_REQUEST["sd"]) as $key) {
echo explode(';', $key)[0];
echo " = " ;
echo explode(';', $key)[1];
echo "<br>";
}