当生成任意移动的URL字符时

问题描述 投票:0回答:1

收到客户的来信,我们的密码重置电子邮件通常可以正确生成,但是(用代码表示)如下:

 <h4> <a href="https://'.$this->server.'/password?email_token='.$email_token.'&user_email='.$user_email.'">reset here</a></h4>

并且所生成的字符串如下:

https://password/?email_token=111111111111111111111aaaaaaabbbb&[email protected]

最后,这是应该的样子:

    https://website.com/password?email_token=111111111111111111111aaaaaaabbbb&[email protected]

这是有趣的部分:

.'/password?

它的产生如下:

password/?

以某种方式生成电子邮件时,将'password'之前的'/'移至密码之后但在'?'之前。

这是一个静态字符串片段,这怎么可能发生?

php html email url php-7.1
1个回答
0
投票

这是由浏览器(Chrome,FireFox和Edge)中的URL解析引起的问题。我没有测试Opera,但是在Internet Explorer 11中没有发生。

源代码中的实际字符串输出是正确的https:///password??email_token=111111111111111111111aaaaaaabbbb&[email protected],但是在单击/鼠标悬停期间,将解析URL以移动多余的/,因为由于缺少域,它不是有效的URI。

运行下面的代码段以在单击和鼠标悬停时验证URL解析:

<a href="https:///password?email_token=111111111111111111111aaaaaaabbbb&[email protected]">Test</a>

但是,只要提供域,URL便不会更改。

<a href="https://example.com/password?email_token=111111111111111111111aaaaaaabbbb&[email protected]">Test</a>
© www.soinside.com 2019 - 2024. All rights reserved.