0

我正在学习php。我有一些代码,我试图将 2 个变量和 2 个数组从一个 php 页面发布到另一个页面,接收页面工作正常,但第一页在几个字符后裁剪数据(它没有达到最大长度或任何接近的地方) -

这里,$array_name 和 $array_qty 是两个动态数组。我已经验证 echo $c 给了我我想要的东西。

 <?php
  $serialized_name=serialize($array_name);
  $serialized_qty=serialize($array_qty) ;
  $c="count=".$count ."&&Sum=" . $a . "&&serialized_name=". $serialized_name . "&&serialized_qty=". $serialized_qty;
  echo $c;
  ?>

echo $c 给了我-

 count=6&&Sum=45.91&&serialized_name=a:7:{i:0;s:7:"vanilla";i:1;s:7:"vanilla";i:2;s:21:"very berry strawberry";i:3;s:7:"vanilla";i:4;s:7:"vanilla";i:5;s:7:"vanilla";i:6;s:7:"vanilla";}&&serialized_qty=a:7:{i:0;s:1:"2";i:1;s:1:"1";i:2;s:1:"1";i:3;s:1:"1";i:4;s:1:"1";i:5;s:1:"3";i:6;s:1:"3";} 

但是,这给了我裁剪的输出$c=

 <p><a href="Checkout.php?<?php echo $c ?>" >Checkout</a> </p>

我从上面的行得到的裁剪输出是 -

http://localhost/myRestaurant/Checkout.php?count=6&&Sum=45.91&&serialized_name=a:7:{i:0;s:7:

我想我应该得到这个-

http://localhost/myRestaurant/Checkout.php?count=6&&Sum=45.91&&serialized_name=a:7:{i:0;s:7:%22vanilla%22;i:1;s:7:%22vanilla%22;i:2;s:21:%22very%20berry%20strawberry%22;i:3;s:7:%22vanilla%22;i:4;s:7:%22vanilla%22;i:5;s:7:%22vanilla%22;i:6;s:7:%22vanilla%22;}&&serialized_qty=a:7:{i:0;s:1:%222%22;i:1;s:1:%221%22;i:2;s:1:%221%22;i:3;s:1:%221%22;i:4;s:1:%221%22;i:5;s:1:%223%22;i:6;s:1:%223%22;}

我知道 get 不是最好最安全的方法,但我认为这应该有效。任何关于我做错了什么以及如何解决它的提示将不胜感激。

4

2 回答 2

3

您的引号将提前结束该属性。转义引号:

<?php echo htmlentities($c); ?>
于 2012-12-08T23:58:30.767 回答
1

您应该对这种购物车产品使用 POST,但无论如何,如果您只想从数组中创建一个 URL,您不能只序列化任意数据,您需要对数据进行编码,否则它会中断,因为特殊字符。

仅用于编码:

$serialized_name = base64_encode(serialize($array_name));
$serialized_qty = base64_encode(serialize($array_qty));

为了检索数据,在 Checkout.php 中,执行相反的操作:

$unserialized_name = unserialize(base64_decode($_GET["serialized_name"]));
$unserialized_qty = unserialize(base64_decode($_GET["serialized_qty"]));
于 2012-12-09T00:04:42.077 回答