0

ユーザーに送信する確認リンクに奇妙な問題があります。何らかの理由で、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 ファイルにリクエストを送信するラッパーですPOSTmail()

スペースが追加されて「%20」にエンコードされる理由はありますか? データベースでは、unique_idフィールドにスペースが含まれておらず、日付の MD5 にもスペースが含まれていないためです。

どんな助けでも大歓迎です。

4

1 に答える 1

0

それは正常です、これを読んでくださいhttp://php.net/manual/en/function.urldecode.php

それらを削除したい場合は、いつでも使用できますtrim

せっかちでした、適切な解決策を説明させてください。デバッグを開始することをお勧めします。スペースは PHP に表示されますか? エコーして結果を確認するだけです。JS でコンソール ログを使用して、最新情報を入手してください。また、md5 が 32 桁で末尾 (33 桁目) に " " が表示される場合は、それを削除してみませんか? しかし、私はそれがphpに表示されるとは思わない

于 2013-01-23T18:46:48.097 に答える