0

基本的に私がやろうとしていることは、メールアドレスを使用してユーザーの身元を確認し、身元が確認されたら特定のデータベース操作を実行することです。確認コードを生成し、URL形式でメールアドレスに送信したい。しかし、確認コード用のデータベースを維持したくないのですが、暗号化を使用してこれを行うにはどうすればよいですか?

4

3 に答える 3

2

次のようになります。

    <?php

    $salt = "this is a secret key!!!";

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

        if(sha1($salt.$to_email) == $confirm){
            // this mail is confirmed, now do some db work
            // update_db ... ();
        }else{
            die("error: mail not confirmed");
        }


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

        $confirm_link = $_SERVER["PHP_SELF"]."?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");
    }
    ?>
于 2012-07-01T18:40:41.370 に答える
1

問題のメールアドレスを秘密のソルトでハッシュして、そのトークンをリンクに含めることができます。次に、それを確認するときに、同じプロセスを繰り返します。

于 2012-07-01T18:28:06.247 に答える
-1

その最良の方法は、データベースに「activation」という名前のvarcharフィールドを含めることです。

そのため、そこに「確認コード」を保持できます。ユーザーが自分のアカウントをアクティブにすると、アカウントを「1」に更新します。したがって、フィールドが「1」の場合、ユーザーが自分のアカウントをアクティブ化しました。それ以外の場合は、確認コードが引き続き表示され、ユーザーのアカウントはアクティブ化されません。したがって、アクティベーションプロセス用に少なくとも1つの列があります。

于 2012-07-01T18:35:20.317 に答える