Php 将多个GET参数合并为一个值

Php 将多个GET参数合并为一个值,php,paypal-ipn,Php,Paypal Ipn,我不确定我在寻找什么,但目前在我的系统中,我发送了一个长url,如下所示: $name=1&option=2&field=4.... 而且相当长。如果我有一个值列表,比如: 名字 选择权 场 我可以把它们放在一根绳子里,在绳子里我可以在某些地方折断,比如用斜线或其他什么 然后对字符串进行编码,使其完全随机,因此我只有一个字段要发送: &data=JKHFGDKGLKJHFKDJHFKJDHFKHDF 最后,我可以解码另一面并将其分解 是否有预构建的功能来执行此操作

我不确定我在寻找什么,但目前在我的系统中,我发送了一个长url,如下所示:

$name=1&option=2&field=4....
而且相当长。如果我有一个值列表,比如:

  • 名字
  • 选择权
我可以把它们放在一根绳子里,在绳子里我可以在某些地方折断,比如用斜线或其他什么

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

&data=JKHFGDKGLKJHFKDJHFKJDHFKHDF
最后,我可以解码另一面并将其分解

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

它是什么:


我正在向paypal发送数据,但我有一些自定义变量希望发送,现在由于某些原因,我的IPN无法获取这些变量,不知道为什么,但如果我添加一个名为custom的变量,则可以将其发送到IPN。所以我想如果我只发送一个名为custom的随机格式,然后解码?

如果你不知道你在寻找什么,我们无法想象lol

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

$string ="$name=1&option=2&field=4";
您可以通过以下方式将其作为单个参数传递:

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

除了
url\u encode
之外,您可以使用
base64\u encode
使用,然后,这将解决您的问题。

您可以简单地对数据进行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中的所有数据进行编码一样)

JSON的中间步骤确保您的数据将保留其结构,并且在接收端可以轻松解码

下边:你的URL会更长。< / P> < P>作为评论者(Bobby)说,当你想发送更大的数据集并防止你的URL变得难以管理或丑陋时,考虑使用POST。

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

如果您不需要这种功能,您不需要为URL对POST变量进行编码/解码,并且它们不能直接添加书签,那么POST变量会更好(这在许多情况下也是可取的)

不过,为了回答您最初的问题,如果您真的,真的必须在URL上发送变量,并且您只想发送一个明显随机的字符串,我建议您自己编写两个编码/解码函数(因为我假设练习的目的不是对其进行加密以防篡改,只是为了使您的URL更友好). 如果对变量可以是什么有限制,这将变得更容易,如果变量可以是任何东西,这将更加困难

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

  • var1(苹果、香蕉、橘子)
  • var2(汽车、摩托车、自行车)
  • var3(红色、黄色、绿色)
通常,您会创建如下URL:

如果将变量分配给数字(例如),使var1、var2和var3分别为1、2或3,则可以通过如下URL发送:

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


但说真的。。。。我会先看看帖子,除非有非常具体的原因说明你为什么会使用这种方法——我以前用过它来缩短URL,使其在社交媒体和论坛上更易于共享。

你[考虑过]是否可以通过
POST
?如果您对字符串进行编码,使其完全随机,您将无法对其进行解码。你在这里的主要目的是什么?是缩短url还是只发送一个字符串中的所有数据?为什么不将数据保存在服务器上,并映射一个“随机令牌”到它。将令牌发送给PayPal,PayPal将返回该令牌,您可以再次查找数据?@salathe,这正是我想要做的,也是最简单的选择,我的问题是用户没有注册,所以我没有用户ID来再次保存订单,我要生成一个随机数,但这会有多随机呢?毫无疑问,没有用户id与屏蔽/编码/发送给PayPal的任何数据完全无关。不,不会。base64编码字符串可能包含
+=/
,在URI中使用这些字符串是不安全的。@Lunar:我不知道这是否能解决您的问题。我建议你试试看。
$url = $url . "&data=" . urlencode($data)