奇怪的MD5生成电子邮件链接问题


Strange MD5 generation to email link issue

我在发送给用户的验证链接时遇到了一个奇怪的问题。出于某种原因,MD5 字符串中插入了一个额外的空格,该空格被编码为"%20"并弄乱了我的验证链接。

我有以下简单的PHP来生成MD5验证字符串:

echo "<input type='hidden' name='unique_id' value='" . md5($event['date_submitted']) . "' />";

提交日期的格式为 2012-09-19 16:21:19

我有以下jQuery,它抓取字符串并POST具有唯一ID的数据库更新,并将链接通过电子邮件发送给用户:

$("#form1_review_form").submit(function(event) {
    event.preventDefault();
    var email = $(this).find("input[name='email']").val(),
        message = message_box.val(),
        alloc_id = $(this).find("input[name='alloc_id']").val(),
        unique_id = $(this).find("input[name='unique_id']").val();
        var informed_message = "<a href='MY_DOMAIN/MY_PHP_FILE.php?id=" + unique_id + "&alloc_id=" + alloc_id + "'>Click here</a>!</p>";
        mail(email, "", "FROM", "SUBJECT", informed_message, "");
        $.post(
            "update_form_url.php",
            { update: "lead_revise", alloc_id: alloc_id, unique_id: unique_id },
            function(data) {
                // do stuff
            }
        );  
});

上面的代码mail()是一个包装器,它向使用 PHP mail()发送电子邮件的 PHP 文件发出POST请求。

知道为什么要添加空格并因此编码为"%20"的任何想法?因为在数据库中,unique_id字段不包含任何空格,日期的 MD5 不包含任何空格。

任何帮助都非常感谢。

很正常,请阅读此 http://php.net/manual/en/function.urldecode.php

如果您想删除它们,您可以随时使用trim

我很匆忙,让我解释一个适当的解决方案。我建议开始进行一些调试,空间是否出现在PHP中?只需响应它并查看结果。在JS中使用控制台登录,并随时更新我们。另外,如果 md5 长 32 位,末尾出现一个"(第 33 位),为什么不修剪它呢?但我怀疑它出现在 php 中