2010-11-28 12 views
3

ユーザの電子メールが有効であることを確認し、この電子メールを自分のシステムのIDに変換したいと考えています。 しかし、私はメールでリンクを作る方法、(facebookとothers )のようなアカウントをアクティブにする方法を知らないし、リンクが選択されたときに何が起こるのか分かりません。電子メールのアクティベーションの仕組みがわからない

私は「sdklbsdgk4493」のようなキーを生成して一度入力することを考えました。推測は難しいですが、多くの人にとって、コピーアンドペーストは簡単ではなく、この解決策では迷惑をかけることがあります。

ご意見やご提案はありますか?

PS:それは、C#で行うことができますので、もし私がC#で働いている...それはアサフ

答えて

9

データベースに新しいユーザーを追加すると、そのユーザーのステータスは「非アクティブ」になり、作成する「GUID」が挿入されます。アクティベーションページへのリンクを送信します。アクティベーションページには、クエリ文字列にこのGUIDが含まれています。あなたはクエリ文字列から、このGUIDを取ると、あなたは、データベースを持っているものにそれを比較、Activation.aspxページで

www.YourSite.com/Activation.aspx?GUID=jdfhg43h98234

:それは次のようになります。そのGUIDを持つアカウントを有効にします。

+2

URLに電子メール自身(エンコード済み)を追加し、GUIDを推測するのではなく自分の電子メールを有効にすることをお勧めします。また、有効期限を設定します。たとえば、2日後にアクティベーションリンクを使用できなくなるなどです。 –

+0

だから、このトリックはURLのクエリ文字列にあります。ユーザーは通常のWebページを参照するだけで、このページはURLからGUIDパラメータを取得し、このパラメータでDB作業を実行します。反復せずに時間の経過とともに一意のランダムキーを作成する方法を理解しています...理論上、ユーザーは自分のメールを受け取った1年後にアカウントをアクティブにしようとすることができます(そして、長い間に誰かが同じランダムキー)? – Asaf

+0

@ Shadow Wizard:それは私を心配するユーザーではなく、システムです。例:2日後にユーザーに鍵1234を与え、彼が活動していないときに彼の一時アカウントを削除します。 1年後に別のユーザーが鍵1234を取得し、変更によって最初のユーザーが古いメールアクティベーションキーを押すことにしました:彼は間違ったアカウントをアクティブにします...メールを暗号化すれば問題は解決します(暗号化について学ぶ必要があります)ほとんどが一意のGUIDオブジェクトを生成する方法については、http://msdn.microsoft.com/en-us/library/system.guid.newguid.aspxをご覧ください。 – Asaf

1

素晴らしい:)

おかげだろうあなたは、あなたのユーザDB内のテーブル(またはどこを持っていますあなたのユーザーリストを保存することです)、ユーザーのメールが検証されたかどうかを示す列を追加するだけです。 検証メールには、ユーザー固有のコード(DB内のインデックスなど)を使用してPHPを起動するリンクを追加します。 PHPはユーザの「validated」カラムをtrueに設定し、それが行われます。

最初は見えるほど複雑ではありません。

1

ランダムキーを作成し、それをuseraccountに接続されたデータベースに保存し、ユーザーの電子メールへのリンクを提供します。これは、Webサービス(または通常のWebサイト)を指し示す可能性があります。特定のキーに接続されているアカウントを有効にします。

4
  1. ユーザーのために

  2. は、一意の文字列、ユーザーID、それが作動してしまったかどうかを保持しているかをブール値を格納するテーブルを持っているユニークな文字列を生成し、ユーザ

  3. を作成します。 、生成日、有効期限、これらのアクティベーション文字列の用途が異なる場合は、タイプ(別のテーブルへのリンク)

  4. ここで文字列を取得し、この電子メールには、検証のために使用するページへのリンク(whatever.com/verify.aspx?activationString=hd3fd33fen342n43)

  5. このページでは、キーを保持するテーブル内でクエリの検索を行いますまだ検証されていない場合は

関連する問題