【问题标题】:Allowing dot at the end of a url允许在网址末尾添加点
【发布时间】:2014-01-31 09:53:28
【问题描述】:

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

当我创建 url 并将它的链接邮寄给用户时,点确实出现在链接的末尾,但不是链接的一部分,因此当用户单击链接时,点会被忽略并且传递了错误的url。

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

【问题讨论】:

  • 你能提供你的php代码来分配url吗?
  • 我正在开发 opencart 框架,并在模型文件中使用此代码发送邮件 $message .= 'Your frontend website is '.HTTP_SERVER.'user/'.$data['company'] ."\n\n";设置发件人电子邮件 id 后,收件人电子邮件 id $mail->send();我使用上面的函数发送邮件

标签: php url opencart sendmail


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    ...或者您可以简单地生成带有适当<a href=""></a> 标记的HTML 电子邮件。

    【讨论】:

      【解决方案3】:

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

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

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

      例如我会发送类似的东西

      http://example.com/profile_123711611121

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

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

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

      第二个 URL 可能被分成两行,解析不正确等等。

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

      【讨论】:

        猜你喜欢
        • 2018-08-15
        • 2019-04-20
        • 2011-08-21
        • 1970-01-01
        • 2015-01-27
        • 2010-11-25
        • 2022-01-02
        • 2013-08-31
        • 1970-01-01
        相关资源
        最近更新 更多