ユーザーに送信する確認リンクに奇妙な問題があります。何らかの理由で、MD5 文字列に挿入された余分なスペースが "%20" にエンコードされ、検証リンクが台無しになります。
MD5 検証文字列を生成する次の単純な PHP があります。
echo "<input type='hidden' name='unique_id' value='" . md5($event['date_submitted']) . "' />";
送信された日付の形式は です2012-09-19 16:21:19
。
POST
文字列を取得し、一意の ID を使用してデータベースを更新し、ユーザーにリンクを電子メールで送信する次の jQuery があります。
$("#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 を使用してメールを送信する PHP ファイルにリクエストを送信するラッパーですPOST
。mail()
スペースが追加されて「%20」にエンコードされる理由はありますか? データベースでは、unique_id
フィールドにスペースが含まれておらず、日付の MD5 にもスペースが含まれていないためです。
どんな助けでも大歓迎です。