• ベストアンサー

会員登録システム 仮登録のメールについて

PHPで会員登録システム(投稿サイト)を構築しようと思っています。 2つ質問があります。 会員登録する際に、よく仮登録と称して、 一度、登録したメールアドレスにメールを送信し、 そこに記載されているURLをクリックしたら本登録となる 仕組みがありますが、これは何のためなのでしょうか。 もう一点は、上記の仕組みを教えていただきたいです。 例:(例です。適当に書いてます) 会員登録フォームで登録(仮登録だがデータベースには保存) ↓ 乱数をセッションに保存し(24時間)、 それを引数(?hoge=hogehoge)としたURLを登録してもらったメールアドレスに送信。 ↓ 引数とセッションの値が一致すれば、 OK。ちがければ、無視。24時間以上たてばデータベースから破棄。 (24時間たったら破棄の仕方は今のとこわかりませんが・・・) というような形で、 考え方を簡単に教えていただけると幸いです。 以上、よろしくお願いいたします!

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

> なるほど!空メールならとりあえずは他人の端末を利用しない限りは、 > 迷惑なことにはならないわけですね! 実は そうとも言えないのですが、そこは言及したくなかったので、前回も置き去りにしました。 普通の人が、普通の使ってる分には、そちらの言うとおりです。 > 空メールを送信してきた相手に返すURLには、 > その人のメールアドレスを引数とかにして、 > URLをユニークにすればいいんでしょうか!? 一般的かどうかは分かりませんが、俺なら 以下のようにします。 空メールが来たら、メールサーバーからPHPにパイプして、 PHPで ユニークなIDを発行して、それを発行した時間と、 空メールの送信元のメールアドレスとをDBに書き込みます。 んで、そのメールアドレスに URL を付けて返信します。 URLは ttp://hoge.jp/hoge.php?uid=wrg5Eae6RbF245sFwYrwrg5Eae6RbF245sFwYr みたいな感じです。 ユニークなIDは uniqid() 使うとか、自分でランダムに生成するとかして、 http://php.net/manual/ja/function.uniqid.php DBに重複がないかを確認する程度です。

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

最初に空メールを送るのは、#1さんのいってる通り。 更に言うと、そちらの提示した方法だと入力ミスなどでメールが届かなかったりすると再登録という二度手間。 更に他人のメールアドレスを入力すると、全く関係ない人に登録確認のメールが行くという迷惑行為。 迷惑行為をやるつもりなら、いくらでも方法はあるのですが、ここでは置いときます。 > 会員登録フォームで登録(仮登録だがデータベースには保存) この時点で、ユニークなIDを発行し、発行した時間と一緒にDBに保存。 タイムオーバーでの削除は、 1.cronを使用して、一定時間ごとにサーチしておくか、 2.次に誰かがトリガを引いた時に、サーチして ついでに削除させるか。 ってトコですかね。 どちらの方法でも、厳密に24時間で削除とはならないかと思いますが。 今は 空メール⇒返信されてきたメールのURLにアクセス⇒登録内容入力⇒登録内容送信⇒完了 ってのが 多分、一般的です。

trfnc223
質問者

お礼

>更に言うと、そちらの提示した方法だと入力ミスなどでメールが >届かなかったりすると再登録という二度手間。 >更に他人のメールアドレスを入力すると、 >全く関係ない人に登録確認のメールが行くという迷惑行為。 なるほど。それで身に覚えのない方は~~みたいな注意書きが 書かれているのですね。 >タイムオーバーでの削除は、 こちらもご回答いただいてありがとうございました。 cronがいいかな~と思いました。 >今は 空メール⇒ なるほど!空メールならとりあえずは他人の端末を利用しない限りは、 迷惑なことにはならないわけですね! すいません、ついでになんですが、 空メールを送信してきた相手に返すURLには、 その人のメールアドレスを引数とかにして、 URLをユニークにすればいいんでしょうか!? それともURLは固定でセッションやクッキーなどで 管理するのがよいのでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>これは何のためなのでしょうか。 メールアドレスの存在チェックと、不必要な追加登録をさけるためです。 セッションIDには生存期間が設定されますので、それまでにその セッションでつながなければ、自動的にそのセッションが無効になります。

trfnc223
質問者

お礼

不必要な登録されたら面倒ですものね。 ご回答ありがとうございます。

関連するQ&A

専門家に質問してみよう