質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

11605閲覧

WEBサイトでの仮登録と本登録の流れと仕組みについて

earnest_gay

総合スコア615

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

5クリップ

投稿2016/07/17 08:23

とある会員登録サイトを制作しています。

新規登録時の話なのですが
・アドレス
・パスワード
この2つだけ入力させて入力したメールアドレス宛に

「仮登録完了。
24時間以内に下記のURLをクリックすることで本登録が完了します。」

などといったメールがくると思います。

ちょっと仕組みが分からないのですが質問が3点ほどあります。

Q1.アクセスしたのが登録をしてから24時間以内であるか24時間超えているのか
この判定はどうやって行うのでしょうか?
それが分かればあとの処理はできるのですが、それが分からず...

Q2.また仮登録の段階ではDBへアドとパスは登録されていないのでしょうか?

Q3.仮登録でもサイトは使えますが、(マイページなどだけ)
メールに届いたURLをクリックしていない場合、
ブラウザ上部に
「メール内に記載されているURLをクリックして本登録を完了させてください」
と表示されますが、それは何を判定にして表示させているのでしょうか?

仮登録でもマイページで会員情報の編集などはできますが、
サービス自体は本登録までしていないと使えないものをよく見かけます。

例えば、ランサーズなら提案するをクリックすると、
本登録を完了させてください。
と表示がでて進めません。

これも本登録がされているかどうかで判定していると思うんですが、
本登録されているかどうかは何で判定しているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

手順

仕様次第と言えばそれまでですが、まずは一例を挙げます。
次の手順はCakePHPの公式プラグインなどで使われています。

【手順】
1.ユーザーが仮登録ページからユーザー名やパスワードなどをシステムに送信(仮登録)
2.システムはトークンを発行し、トークン・トークンの期限・ユーザー名・パスワード・メールアドレス・仮登録の状態などをデータベースに保管
3.システムは本登録用のリンクにトークンを付加し、ユーザーへメールを送信
4.ユーザーはメールのリンクよりアクセスすることで本登録が完了。システムは本登録が完了したという情報をデータベースに保管。
5.システムはユーザーをログインさせ、マイページなどを表示させる

個別質問

上記の手順を踏まえてご質問にこたえます。

Q.1 本登録完了までの期限の判定方法
上記手順の2.でトークンの期限をデータベースに保存しているので、手順4.でユーザーがリンクからアクセスする時にトークン期限と現在時刻を比較して判定しています。
トークンの期限を過ぎてしまった場合は、手順2.でデータベースに保存しているメールアドレスにメールを送信することでトークンの期限を更新します。

Q.2 仮登録時の情報を保存するかどうか
仮登録の段階(手順1.)で入力した情報はデータベースに登録します。

Q.3 アクセス権
登録の状態によってアクセス権を設定し、アクセス権に合ったページの表示やサービスの提供を行います。(手順2.や4.などで登録の状態をデータベースに保存してある)
仕様によりますが、例えば管理者・仮登録ユーザー・本登録完了ユーザー・A課金ユーザー・B課金ユーザー……などです。

言葉の定義

仕様によって何を仮登録とするのか、何を本登録にするのかも変わります。

例: 本登録の完了時期
登録した時点で本登録が完了
課金した時点で本登録が完了

なので、まずはやりたいことを決めてから言葉の定義をしてもいいかもしれません。

投稿2016/07/17 09:15

coba-coba

総合スコア1409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/07/17 09:28

回答ありがとうございます。 なんとなく分りましたが1つ確認させてください。 >トークン期限と現在時刻を比較 これは例えばcreatedなどというカラムを作りtimestampで登録した日時を保存し、 現在の時刻がそのカラムに登録されている時刻より24時間以内であるかどうかという認識で大丈夫ですか? トークン期限という表現がちょっと分からなかったので...
coba-coba

2016/07/17 10:13

そうですね、ほぼrentoさんの認識されてる通りです。 それでも構いませんが、私の意図としては仮登録の段階で「仮登録の情報を送信した時点の日時」+「24時間」の時刻をデータベースに保存します。 例えば、2016年7月17日の15:00に仮登録した場合、データベースには24時間後である2016年7月18日15:00を保存します。 これをトークン期限と表現しています。 本登録用のリンクから登録完了ページにアクセスする際には、「登録完了ページにアクセスした時点の日時」とトークン期限を比較します。
earnest_gay

2016/07/17 10:28

ありがとうございます! 色々試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問