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