6

メールが実際に存在するかどうかを確認するにはどうすればよいですか?ユーザーが自分がメールの所有者であることを確認するためにクリックする一意のリンクを使用してメールを送信する方法をサイトが理解することはできません=/

アクティベーションキーと呼ばれる2つの新しい列を作成し、アクティベートしてランダムな文字列を保存し、アクティベーションキーを使用してメールを送信し、そのアクティベーションリンクに一致するアクティベートされたユーザー=1を更新します

register.php?a=activate&key=9cdfb439c7876e703e307864c9167a15

より良いアイデアはありますか?

4

3 に答える 3

16

私は通常、ユーザーIDとアクティベーションキーを含むリンクを送信します。彼らが私のアクティベーションスクリプトにアクセスしたときに、一致するものが見つかった場合は、それらをアクティベートします。

それらが登録されると、おそらく32文字の大文字/小文字の英数字を生成し、それをアクティベーションキーとして設定します。この時点で、「アクティブ化」というフィールドを作成できます。または、ユーザーがアクティブ化キーを持っている場合は、ユーザーがアクティブ化されていないと想定できます。

uid | メール| 鍵
-------------------------------------------------- ----------
001 | j.smith@mysite.com | e09141f3f5a17fed6222fc0279b9afdf
-------------------------------------------------- ----------
002 | mary.tyler@abc.com |
-------------------------------------------------- ----------

ユーザーがアクティベーションスクリプトにアクセスしたら、提供されたキーと提供されたIDを確認し、一致するものが見つかった場合は、ファイルのユーザーレコードからキーを消去し(またはブール値の「アクティブ化された」フィールドを更新し)、ドアを開きます。 。

提供されたメールアドレスが存在しない場合でも、損失はありません。1か月間操作がなかった後は、キーを使用してすべての行を定期的に削除できます。

于 2010-01-06T22:20:39.327 に答える
2

アクティベーションキーの代替手段の1つは、ユーザーがログインした場合に、生成されたパスワードをユーザーの電子メールに送信することです(もちろん、パスワードを好みに変更できるはずです)。

于 2010-01-06T23:39:03.243 に答える
0

メールが実際にプログラムで存在するかどうかを確認する簡単な方法はありません。いくつかの方法(メールサーバーへのpingなど)がありますが、すべてのメールサーバーの設定で機能することが証明されている方法はありません。説明したようなリンクを介してユーザーにアカウントをアクティブ化するように強制するのが、それを行うための最良の方法です。また、一定期間後に非アクティブ化されたメンバーを削除するcronジョブのようなある種の定期的なスクリプトが必要になる場合があります(テーブルに別の列、タイムスタンプが必要になります)。

これは、ユーザーがサインアップしてもアカウントをアクティブ化して電子メールを削除せず、電子メールをIDとして使用している場合(単なる例)、アクティブ化を完了できないため便利です。または、ログインしようとした場合は、アクティベーションメールをそのアドレスに再送信するだけです。

メールにすべてのヘッダー(返信先、差出人など)を指定していることを確認して、メールにスパムのフラ​​グが付けられないようにしてください。

于 2010-01-06T22:27:17.193 に答える