使用$ _get时的大链接

时间:2013-09-26 08:57:23

标签: php get

我正在处理激活链接。它看起来像这样。

localhost/actvte/validate.php?type=activate&geo=define&
value=227755RYQBENU5G8WE7RFPO6CD6Z#MJ1H1FA@G#IZWZ53903
&target=loaded&resrc=G6MYMI2R67727229911380184297841084713071U8VUYIGR
&master=user@gmail.com

但是当我使用$ _get ['value']时,我只得到“227755RYQBENU5G8WE7RFPO6CD6Z”。此后整个链接变得无用。如果我这样做

  echo $_get['target']; or echo $_get['master'];

它说undefined variable'target'或'master'。

所以我该如何处理这个大链接。

4 个答案:

答案 0 :(得分:4)

在将其放入GET之前,您应该在字符串中使用PHP中的urlencode()函数。这样,您的字符串变为227755RYQBENU5G8WE7RFPO6CD6Z%23MJ1H1FA%40G%23IZWZ53903而不是227755RYQBENU5G8WE7RFPO6CD6Z#MJ1H1FA@G#IZWZ53903,因为查询字符串中不能使用特殊字符。

例如,哈希甚至不会被浏览器发送到服务器,因此背后的一切都无法与您联系。

请查看RFC 3986以获取有关URI语法的更多信息(包括哈希)。

答案 1 :(得分:2)

不使用或正确编码片段标识符(#)。

答案 2 :(得分:1)

您不应在URL中使用#,而是以某种方式编码,或使用其他字符。

答案 3 :(得分:1)

URL中的第一个#表示片段标识符的开头。如果您想将其作为数据而不是URL的分隔符组件发送,则需要将其表示为%23