• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:新規登録にて、メールアドレス確認)

新規登録にて、メールアドレス確認

このQ&Aのポイント
  • ある程度のサイトでは、会員登録後にメールアドレス確認が必要です。
  • 登録完了のためにメール内のURLをクリックする必要があります。
  • 質問者は、このプログラムを作成したいと思っています。

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

  • ベストアンサー
  • SuperLe
  • ベストアンサー率44% (434/977)
回答No.3

私はFirebirdでやっているので、MySQLだと少し違うかもしれませんが テーブル名が PSUDETBL フィールドが MAIL,KEY0,EXPIRE0 と仮にしておきます。 (DBとTABLEは別途作成してあるとします) インクルードファイル(dbinit.php)で、 <?php $DB=ibase_pconnect("データベースファイル","ユーザ名","パスワード"); ?> で、持続的オープンしておきます。 <?php  include_once("dbinit.php");//インクルードファイルを読み込む ~  $KEY=「ユニークなキー」;  $MAIL=「メールアドレス」;  $EXP=Time()+3600*24*30;//例えば30日の有効期限  $Q="SELECT COUNT(*) FROM PSUDETBL WHERE MAIL='$MAIL';";  $R=ibase_query($DB,$Q);  $O=ibase_fetch_object($R);  if ($O->COUNT ==0) { $Q="INSERT INTO PSUDETBL VALUES('$MAIL','$KEY',$EXP);"; $R=ibase_query($DB,$Q);   ほかの処理 (メールを送信したり、結果を表示させる)  } else {    仮メールアドレス登録済みのエラー  } とこんな感じです。 DELETEのSQL文も同様に処理できると思います。 MySQLは使っていないのですが、ヘルプによると MySQLi_Select_db()でデータベースのテーブルを選択するようですね。 詳しくは http://jp.php.net/manual/ja/ のオンラインヘルプで。

参考URL:
http://jp.php.net/manual/ja/

その他の回答 (2)

  • SuperLe
  • ベストアンサー率44% (434/977)
回答No.2

たとえば、テーブルの列が、MAIL,KEY,EXPIRE の3つだったとします。 データベースエンジンにあった、SQL文に逐次変更してくださいね。 >仮登録のメールアドレスと、そのユニークなキーと、有効期限を、仮登録用のテーブルにinsertする。 有効期限は、現在の日付時刻+日数; INSERT INTO 仮登録用のDBのTABLE名 VALUES(メールアドレス,ユニークなキー,有効期限); というようなSQL文を発行すれば、テーブルに、データを追加挿入できますよね。 >メールアドレスとキーで仮登録用のテーブルから、Selectする。 >登録されていて、有効期限内であれば 本登録の処理をする。 同様に、 SELECT * from 仮登録用のDBのTABLE名 where MAIL=メールアドレス AND KEY=入力されたキー; で、結果セットの行数が1個であれば、その結果セットから有効期限を確認して、今日がその有効期限以内であれば、本登録のデータベースに登録して、登録完了の表示を出し、 Delete 仮登録用のDBのTABLE名 where MAIL=メールアドレス AND KEY=入力されたキー; で、仮登録のデータを削除します。 >ついでに、有効期限の切れている仮登録用のデータをDeleteしておく。 Delete 仮登録用のDBのTABLE名 where EXPIRE<今の日付時刻;で、無効なデータを削除しておく。 とこんな感じでどうでしょう。

suiku
質問者

お礼

PHPで、 データの追加・データの引用・データの削除の簡単なスクリプトでいいですから作ってくれませんでしょうか? (データの追加・データの引用・データの削除の仕方がわかるぐらいのスクリプト)

  • SuperLe
  • ベストアンサー率44% (434/977)
回答No.1

1: //登録時 ユニークなキーを生成する。 仮登録のメールアドレスと、そのユニークなキーと、有効期限を、仮登録用のテーブルにinsertする。 メールアドレスに、キーを組み込んだURLを含むテキストを送信する。 例えば http://***.***.jp/***/***/?mail=***@****.**&key=AbCdEfg1234567 という感じ //CGI http://***.***.jp/***/***/index.php など メールアドレスとキーで仮登録用のテーブルから、Selectする。 登録されていて、有効期限内であれば 本登録の処理をする。 ついてに、有効期限の切れている仮登録用のデータをDeleteしておく。 とこんな感じにすれば? 2: 同様に、書かれているとおり、処理をすればいいのでは。 普通に、SQL文を発行して、一致するのがあれば、エラー画面に移行するのは難しくないと思います。 PHPなんかだと、入力したものを送信するのは、CGIやスクリプトで受ける(Formのactionのね)でしょうから、スクリプトの冒頭で、それらのチェックを行なってデータに部整合があれば(例えばPHPだと)header("Location: エラー画面")を、他の出力に先んじで書けば、移行しますし。 3:質問の意図が?

suiku
質問者

補足

3.は撤回してください。 ユニークなキーを生成する方法はわかるのですが、 [仮登録のメールアドレスと、そのユニークなキーと、有効期限を、仮登録用のテーブルにinsertする。 メールアドレスとキーで仮登録用のテーブルから、Selectする。 登録されていて、有効期限内であれば 本登録の処理をする。 ついてに、有効期限の切れている仮登録用のデータをDeleteしておく。] の4つをもうすこし詳しく教えてくれませんでしょうか?

関連するQ&A