-16

私はこれに数時間いて、問題が何であるかについて頭を悩ませています。

フォームは機能してメールを送信しますが、確認リンクをクリックすると、エコーされた「成功」メッセージではなく、die(「エラーメッセージ」)が表示されます。メッセージ。$ saltと何か関係がありますか?

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="text" size="35" name="email" title="Email"> 
<input id="button" type="submit" name="submit" value="Submit your Email" />

</form>

<?php

$salt = "mysecret";

if(isset($_POST["confirm"]) && isset($_POST["email"])){
    $confirm = $_POST["confirm"];
    $to_email = $_POST["email"];

    if(sha1($salt.$to_email) == $confirm){
        echo "Success";
    } else{
        die("error: mail not confirmed");
    }


} elseif(isset($_POST["email"])){
    $to_email = $_POST["email"];

    $confirm_link = "http://www.mysite.com/form.php?confirm=".urlencode(sha1($salt.$to_email))."&mail=".urlencode($to_email);
    $msg = "to confirm ... click the link: \n ".$confirm_link;
    mail($to_email, "pls confirm your mail", $msg);
} else{
    die("error message");
}

?>
4

2 に答える 2

8

電子メールからその確認リンクをクリックすると、値はPOSTではなくGETを介して渡されます。

于 2012-10-02T16:01:07.220 に答える
3

リンクをクリックしたときに$_GETに渡されたときに$_POSTのデータをチェックし、リンクでメールパラメータ(「e」なし)を指定し、「email」パラメータをチェックします。

于 2012-10-02T16:00:45.757 に答える