将多个GET参数合并为单个值

时间:2011-06-03 12:08:47

标签: php paypal-ipn

我不确定我在寻找什么但是目前在我的系统中我发送了这样的长网址:

$name=1&option=2&field=4....

它很长。所以,如果我有一个值列表,如:

  • 名称
  • 选项
  • 字段

我可以将它们放入一个字符串中,我可以在某些字符串中断,例如斜线或其他任何点。

然后对字符串进行编码,使其完全随机,因此我只有一个字段要发送:

&data=JKHFGDKGLKJHFKDJHFKJDHFKHDF

然后最后我可以解码另一方并分手。

是否有预先构建的功能来执行此操作?

它是什么:

我发送数据到paypal,但我有一些我希望发送的自定义变量,现在由于某种原因我的IPN没有找到它们,不知道为什么,但如果我添加一个名为custom它得到IPN罚款。所以我想如果我只是以随机格式发送一个叫做自定义然后解码?

4 个答案:

答案 0 :(得分:1)

使用base64_encode然后base64_decode,这将解决您的问题。

答案 1 :(得分:1)

您可以简单地对数据进行Base64编码。

$a = array('name' => '1', 'option' => '2', 'field' => '4');
$temp = json_encode($a);       // convert array to string
$data = base64_encode($temp);  // encode string

输出:

"eyJuYW1lIjoiMSIsIm9wdGlvbiI6IjIiLCJmaWVsZCI6IjQifQ=="

要在网址中发送此内容,您必须再次对其进行编码(就像您必须对要在网址中发送的所有数据进行编码一样)

$url = $url . "&data=" . urlencode($data)

通过JSON的中间步骤可确保您的数据能够保持其结构,并且可以在接收端轻松解码。

缺点:您的网址会更长。

答案 2 :(得分:0)

如果你不知道你在找什么,我们无法想象那么哈哈。

无论如何如果我找到你,你可以这样做,考虑到你已经建立了你的字符串:

$string ="$name=1&option=2&field=4";

您可以将其作为单个参数传递:

$data = url_encode($string);   
<a href="url?data={$data}"></a>

url_encode以外,您可以使用base64_encode

答案 3 :(得分:0)

正如评论者(Bobby)所说 - 当你想发送更大的数据集并防止你的URL变得无法管理长或丑时,请考虑使用POST。

GET变量可以方便地为用户提供他们可以直接添加书签的页面,这在某些情况下是可取的,例如在带有查询字符串的搜索页面和/或已填写的过滤器上,以便用户可以返回搜索并定期检查新结果,而无需重置所有选择。

如果您不需要这种功能,POST变量会更好,您不需要为URL编码/解码它们,也不能直接添加书签(在许多情况下也是如此)。

要回答你的原始问题,如果你真的,真的必须在URL上发送变量,你想发送一个明显随机的字符串,我建议写一些你自己的编码/解码函数(因为我假设练习的目的不是加密它以防止篡改,只是为了使你的网更友好)。如果对变量有限制,这将更容易,如果它们绝对是任何东西,则会更加困难。

例如 - 如果您有以下变量和可能的设置:

  • var1 (苹果,香蕉,橙色)
  • var2 (汽车,摩托车,自行车)
  • var3 (红色,黄色,绿色)

通常情况下,您会创建一个网址:

http://www.mysite.com/page.php?var1=banana&var2=car&var3=green

如果您将变量分配给数字(例如)以便var1,var2和var3为1,2或3 - 那么您可以通过以下URL发送:

http://www.mysite.com/page.php?vars=213

将另一端分解成单个数字并将其转换回“香蕉”,“汽车”和“绿色”。

但是认真......我会先看看POST,除非你有非常具体的理由说明你会采用这种方法 - 我之前用它来缩短网址,使其在社交媒体上更容易共享论坛。