- 締切済み
入力フォームに予めMySQLのデータを反映させたい
現在、会員登録のプログラム構築をPHPで進めています(構築をメインで進めているのは自分ではありません)。 まずユーザーに会員IDとなるメールアドレスを入力していただき、「送信」ボタンをクリックすると、そのメールアドレスに対して本登録用の入力フォームへのリンクを貼ったメールを自動送信します。 (同時にMySQL DBにレコードを一つ作成、入力されたメールアドレスが会員IDとして保存される) そしてユーザーに本登録用のフォームから登録情報を入力していただき、入力後に入力内容を確認するページを表示し、間違いがなければ会員登録完了、という流れです。 (登録完了時に最初に作られたレコードに本登録用フォームで入力されたデータが保存される) 最初に入力していただいたメールアドレスに送信する自動送信メールに貼るリンク先の本登録用フォームについて、自動送信メール内のリンクを開いた際に「最初に入力していただいたメールアドレスが会員IDとして登録されている状態」で表示するように考えています。 仕組みは某グルメクーポンサイトのホッ◯ペッパーの会員登録の流れにとても似ています。 このシステムを構築する中で、上記の "最初に入力していただいたメールアドレスに送信する自動送信メールに貼るリンク先の本登録用フォームについて、自動送信メール内のリンクを開いた際に「最初に入力していただいたメールアドレスが会員IDとして登録されている状態」で表示する" の部分でプログラムをどのように書けばいいかがわかりません。 自動送信メールに本登録フォームのURLを貼り付ける部分まではなんとか仕組みはわかりました。しかし、本登録フォームにアクセスした時に、ユーザーが最初に入力したアドレスが予め会員IDの部分に入力されている状態で、本登録フォームを表示させたいのですが、そこの仕組みがわかりません。 まだPHP、MySQLともに初心者です。 困っています。。 どうかご回答よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- emoemoemosan
- ベストアンサー率54% (20/37)
>同時にMySQL DBにレコードを一つ作成、入力されたメールアドレスが会員IDとして保存される この時は仮登録用テーブルを使用しましょう。 本登録URLに紐付けのために適当に暗号化されたキーを作ります。 cryptかなんかで暗号キーはメールを見た本人以外には絶対判らないものを作ってやります。 http://php.net/manual/ja/function.crypt.php この時、万が一同じものを生成しないようにタイムスタンプを混ぜとくといいかもしれません。 そしてその暗号キーをメールアドレス等と一緒に仮登録テーブルに保存し、 メールに記載する本登録用URLにGETパラメータに添付しておきます。 本登録用URLがアクセスされたときに、その暗号キーで仮登録用DBを検索、 あればその情報をだしてきて、formの各value値に載せておく。 なければエラー画面。 本登録が完了した時点で、仮登録用テーブルから先ほどのレコードを削除。 っと、こんな感じでどうでしょうか。 あと、仮登録テーブルはほっとくと溜まっていきそうですから、 仮登録日時のカラムを作っておいて、URLの有効期限をメールに記載しておき、 1日に一度クーロンを回して期限切れのレコードを削除してやるといいと思います。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 前の質問も拝見しましたが、MySQLへの接続等の基本的な部分は出来ているのでしょうか。 まずいろいろなシステムがありますが、全て基本的な機能の拡張版みたいなものです。 たとえば質問されている、あらかじめメールアドレスを表示しておくという機能ですが、カウンター機能と大した差はありません。 どちらもデータを取得してHTMLに含めて返してあげる処理です。 ※DBへの接続等はいろいろな方法がありますので環境に合わせてください。 $sql = "select MAILADD from MEMBER where REGKEY='$regKey' and REGFLAG=0"; というSQLをメールアドレスに記載されたURLにアクセスがあった際に発行します。 $regKeyは http://xxx.xxx.xxx/regist.php?redf4r4rqddlkj のような登録用アドレスだった場合は?以降の文字になります。 これは仮登録のする際に発行したキーとなります。 (このkeyをキーとして紐付いたメールアドレスが登録されていると仮定) するとデータベースよりkeyに紐付いたMAILADDが取得できますのでそれをフォームに反映すればOKです。 <input type="mailadd" value="<?= $mailAdd ?>"> こうすればアクセスした際にデフォルトでメールアドレスが表示されていることになります。 ただ、この場合キーの発行の法則が悪意を持ったユーザにばれると他人のメールアドレスが表示されることにもなりますのでご注意ください。 仮登録の際に連番で発行するようなキーではダメとうことです。 DB接続やなんかは抜きにして、まずは1ソースで完結するようなものを作ってみて勉強しては如何でしょうか。 (変数にセットした値を画面上に表示するだけのもの等)
お礼
LancerVII 様 お礼が遅れました。 あらためて、ご回答ありがとうございます!! 回答を拝見して、今までぼんやりとしか見えていなかった構築の流れの部分がはっきり見えた気がします!! 現在、MySQL接続、DBへの保存 はできています。 回答いただいた内容を参考に、構築を進めていきたいと思います! ありがとうございます!!
お礼
emoemoemosan 様 お礼が遅れました。 改めて、ご回答ありがとうございます!! 現状として、なんとか入力フォームからDBへの保存が解決したので、 本登録URLへの紐付け、cryptの使用方法 から調べて、構築を進めていきたいと思います! 大変参考になる回答をありがとうございます!!!