プロが教える店舗&オフィスのセキュリティ対策術

PHPで会員登録システム(投稿サイト)を構築しようと思っています。

2つ質問があります。

会員登録する際に、よく仮登録と称して、
一度、登録したメールアドレスにメールを送信し、
そこに記載されているURLをクリックしたら本登録となる
仕組みがありますが、これは何のためなのでしょうか。

もう一点は、上記の仕組みを教えていただきたいです。
例:(例です。適当に書いてます)
会員登録フォームで登録(仮登録だがデータベースには保存)

乱数をセッションに保存し(24時間)、
それを引数(?hoge=hogehoge)としたURLを登録してもらったメールアドレスに送信。

引数とセッションの値が一致すれば、
OK。ちがければ、無視。24時間以上たてばデータベースから破棄。
(24時間たったら破棄の仕方は今のとこわかりませんが・・・)

というような形で、
考え方を簡単に教えていただけると幸いです。

以上、よろしくお願いいたします!

A 回答 (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に重複がないかを確認する程度です。
    • good
    • 0

最初に空メールを送るのは、#1さんのいってる通り。


更に言うと、そちらの提示した方法だと入力ミスなどでメールが届かなかったりすると再登録という二度手間。
更に他人のメールアドレスを入力すると、全く関係ない人に登録確認のメールが行くという迷惑行為。
迷惑行為をやるつもりなら、いくらでも方法はあるのですが、ここでは置いときます。

> 会員登録フォームで登録(仮登録だがデータベースには保存)
この時点で、ユニークなIDを発行し、発行した時間と一緒にDBに保存。

タイムオーバーでの削除は、
1.cronを使用して、一定時間ごとにサーチしておくか、
2.次に誰かがトリガを引いた時に、サーチして ついでに削除させるか。
ってトコですかね。
どちらの方法でも、厳密に24時間で削除とはならないかと思いますが。

今は 空メール⇒返信されてきたメールのURLにアクセス⇒登録内容入力⇒登録内容送信⇒完了 ってのが 多分、一般的です。
    • good
    • 0
この回答へのお礼

>更に言うと、そちらの提示した方法だと入力ミスなどでメールが
>届かなかったりすると再登録という二度手間。
>更に他人のメールアドレスを入力すると、
>全く関係ない人に登録確認のメールが行くという迷惑行為。
なるほど。それで身に覚えのない方は~~みたいな注意書きが
書かれているのですね。

>タイムオーバーでの削除は、
こちらもご回答いただいてありがとうございました。
cronがいいかな~と思いました。

>今は 空メール⇒
なるほど!空メールならとりあえずは他人の端末を利用しない限りは、
迷惑なことにはならないわけですね!

すいません、ついでになんですが、
空メールを送信してきた相手に返すURLには、
その人のメールアドレスを引数とかにして、
URLをユニークにすればいいんでしょうか!?
それともURLは固定でセッションやクッキーなどで
管理するのがよいのでしょうか?

お礼日時:2010/03/08 14:46

>これは何のためなのでしょうか。



メールアドレスの存在チェックと、不必要な追加登録をさけるためです。

セッションIDには生存期間が設定されますので、それまでにその
セッションでつながなければ、自動的にそのセッションが無効になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/08 14:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!