我发送给用户的验证链接有一个奇怪的问题。出于某种原因,在 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发送电子邮件POST
的 PHP 文件发出请求。mail()
任何想法为什么要添加空格并因此编码为“%20”?因为在数据库中,该unique_id
字段不包含任何空格,并且日期的MD5不包含任何空格。
任何帮助深表感谢。