将所有值传递到一个变量中,然后拆分它们



嗨,对于我正在设计的网站,我被要求使用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 表单隐藏元素传递数组

您可以使用phpimplodeexplode函数。
第一部分是内爆。
我们使用;作为内爆分度计,它使用该内爆计将数组元素连接为单个字符串。

<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>";
}

最新更新