允许网址末尾的点

时间:2014-01-31 09:53:29

标签: php url opencart sendmail

我正在创建一个在其末尾有用户名的网址,用户名中可以包含点。它最后还可以包括点。

当我创建网址并将其链接发送给用户时,点确实出现在链接的末尾但不作为链接的一部分,因此,当用户点击链接时,点被忽略,错误的网址被传递。

我在末尾添加的用户名是数据库中的变量名,所以我不知道如何解决这个问题。

3 个答案:

答案 0 :(得分:0)

您最好的选择是以HTML格式发送电子邮件。这样,您就可以直接决定链接是什么,并阻止用户通过电子邮件发送客户端自己的魔力。

另一种可能性是对点进行URL编码。看到这个问题/答案:Encode the url including hyphen(-) and dot(.) in php

答案 1 :(得分:0)

换句话说,您正在以纯文本形式发送链接,并且您希望更改算法以从收件人阅读邮件的所有不同电子邮件客户端使用的文本中提取URL。你显然不能。

如果您对点进行URL编码,则可以欺骗大多数解析工具:

http://example.com/foo%2E

...或者您只需使用正确的<a href=""></a>标记生成HTML电子邮件。

答案 2 :(得分:0)

如果不是发送您发送用户ID的用户名(可能是一个数字),您的问题就会消失。

电子邮件客户端应该很容易处理。

我做的另一件事,虽然它需要更多的编程,但是发送简短的简单URL,不存在被破坏的风险。

例如,我会发送类似

的内容

http://example.com/profile_123711611121

然后在服务器端,使用URL重写我拦截它并将其传递给PHP代码,该代码知道URL的含义并正确地重定向到更复杂的URL,如:

http://example.com/users/profile/update_profile.php?id=123711611121

第一个URL将被很好地解析,它也可以很容易地被非技术人员复制粘贴。

第二个URL可能分为两行,未正确解析等等。

总之,您可以控制您发送电子邮件的URL。让您和您的用户变得简单! :)