将+保留在get请求字符串中

时间:2016-09-14 08:36:20

标签: php laravel get request

我正在开设parkos网站,客户可以通过电子邮件进行预订,但有些客户在电子邮件中使用加号。

例如:

test+parkos@gmail.com

现在,如果客户想看到他们的预订,我正在网址中创建一个获取请求,你会得到这样的结果:

http://test.com/reservations/?email=test+parkos@gmail.com&number=GH76G
之后,我正在尝试检索电子邮件并回复它:

$email = request()->input('email');
{{!! $email!!}}

如果我尝试在我的网页上查看这是我得到的:

test parkos@gmail.com

+符号消失了,我想知道是否有办法保留+号。

3 个答案:

答案 0 :(得分:2)

网址错误,因为根据CGI标准,+符号有其自己的含义。它意味着一个空白。

正确的网址

http://test.com/reservations/?email=test%2Bparkos@gmail.com&number=GH76G

URLs and plus signs

中所述
+ becomes %2B
space becomes %20

为了避免进一步的错误,最佳做法是在使用URL之前编码文本,如下所示:

$url = "http://" . $domain . "/whatever.php?text=" . urlencode($text);

答案 1 :(得分:0)

发送已解码的网址并获取$ _GET ['email']

urlencode('test+email@gmail.com');

答案 2 :(得分:0)

空格字符在application / x-www-form-urlencoded键值对中编码为“+”。

RFC-1866(HTML 2.0规范),第8.2.1段。第1小节说:“表格字段名称和值被转义:空格字符被替换为'+',然后保留字符被转义”。

因此,在解码URL时,将脉冲解码回空间。例如,在您的网址中。

如果使用PHP构造此URL,请在每个键/值对上调用urlencode(),不要连接未编码的字符串。

http://test.com/reservations/?email=test+parkos@gmail.com&number=GH76G

电子邮件将成为

test parkos@gmail.com

要防止它,请确保URL中的“+”字符是正确的百分比编码,因此正确的URL应如下所示:

http://test.com/reservations/?email=test%2Bparkos@gmail.com&number=GH76G