2017-01-16 3 views
-1

私はアカウントを作成できるウェブサイトを作っています。登録手続きの一環として、ユーザーのEメールアドレスにアクティベーションEメールを送信したいと考えています。このメールには、ユーザーがクリックしてアカウントをアクティブにするリンクが含まれていると思っていましたが、問題はリンクの作成方法とその動作方法がわかりません。どのようにしてこのリンクを動的に生成すれば、どのようにアカウントをアクティブにするのですか?PHPのメールでアカウントを有効にする

おかげ

あなたは電子メールを送信するために準備をしている
+0

あなたはデータベースを使用していますか?ユーザーデータにフィールドを追加し、その値からリンクを生成することができます。次に、スクリプトを使用して、そのリンクを使用している誰かを、GET値に格納されている値で検証します。メールを自動提出することはそれほど難しくありません。あなたはメールを送信するために何を使用していますか? swiftmailのようなもの?次に、スクリプトを使用して、検証値をsthに変更します。 ACTIVIVEDなどのように。 http://stackoverflow.com/questions/2293684/what-is-the-best-way-to-create-a-random-hash-string – Pingbeat

+0

そうです。私はちょうどPHPスクリプトを使用してメールを送信しています、私はちょうど私の頭の中でそれのためのロジックを取得する必要があります。あなたの言っていることはたくさん意味があります。私はその論理を使って試してみると思います。 – EthanLewis

答えて

2

、アカウントを作成した後、あなたはそのアカウントのIDとアクティベーション文字列を含めるべきか、そのアカウントを検証するために、データベースにレコードを追加する必要があります(私は10から15文字のランダムな16進数または英数字の文字列を生成します)。このレコードは、それがアクティブであっても、数値(またはバイナリ)1または0であっても、trueまたはfalseのブール値を持つ必要があります。このアクティベーション文字列とアカウントIDを電子メールのリンクに送信します。

あなたが作成するリンクについては、ページを1つだけ、つまりactivateaccount.phpにすることをお勧めします。 そのファイルの中から、$ _GETパラメータを受け取ることができます']と$ _GET [' account_id ']を使用します。このページから、activationとaccount_idの両方が有効であり、お互いが一致していることを検証します。そうでない場合、スクリプトは、望ましくない攻撃を可能にする可能性があるため、データベースに書き込むことによって不一致を修正しようとするべきではありません。両方が有効で一致している場合は、アカウントが有効化されている可能性があります。

また、Pingbeatが示唆したように、Swiftmailerに行ってください。以前は多くのプロジェクトでこれを使用していましたが、非常に汎用性が高く、高速で、文書化が非常に簡単で、使い方も非常に簡単であることを確認できます。

この提案が役立ちます。

+0

私は誰かがそれをどうやってできるか考えました。実際の起動方法は異なりますが、このアイデアには多くの方法があります。+1。 :) – Pingbeat

+0

確かに、多くの異なる方法。私は、PHPBBのような上位プロジェクトでは、はるかに複雑なやり方をしている可能性が高いと確信しています。また、電子メールアドレスを$ _GETパラメータとして追加して検証することもできますが、現実世界では、任意のアカウントのアクティベーション番号をランダムに生成する可能性は非常に低いため、電子メールアドレスも必要ではありません。 –

+0

あなたは正しいです。あなたがその電子メールを使用したい場合は、なぜこれまでに。 md5を使用してGETでクリアテキストで送信しないようにすることができます – Pingbeat

関連する問題