• ベストアンサー

登録確認メールで、24hのみ有効にしたい

ユーザー登録をした際、ユーザー宛確認メールを送信しているのですが、 リンクの有効期限設定の仕方が分かりません。 例えば、24hのみ有効にしたい場合、具体的に、どのように実装するのでしょうか?

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

ANo.1です strtotime('-24 hour')より前の日時ならアウト と書いたのに >//タイムスタンプを渡して 24h以内で条件式 >if(strtotime('-24 hour', $hoge)){ となっている時点で「もうちょっと考えて欲しい」とは思います。現在時刻との比較対象をするならデータベースの日時+24 hourですよね(私が提示したのはデータベースの日時と比較するチェック日時です)。 #というか比較演算子を書いていないので(何と比較 #するか提示されていないので)何とも言えませんが >条件式で判定せずに、cronを使ったやり方もアリなのでしょうか? 24h経過していても次のcron実行まで削除されませんから、cronの動作間隔の時間ズレてしまうのが「気にならない」ならどうぞ。私はそういうシステムは嫌いなので。というか、cronで削除するSQL文のwhere条件が書けるなら、同じwhere条件の逆をチェック用のスクリプトの条件に追加すればいいだけです(ハッシュの条件とともに「24h経過していないデータ」という条件をandで付加する)。なので解としては 1.if文で条件判定してやるべき もしくは 4.「SQL文に24h経過していない」という条件を付加する です。cronでの削除に頼るやり方はお勧めしません(万一cronが動かない状態になったらどうするのか・・・)。

re999
質問者

お礼

回答ありがとうございました。 参考になりましたー

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

確認メールのリンクからアクセスされたときにチェックするためのデータは存在するんですよね? データベースであればレコードに作成日時の列があればいいですし、ファイルであればタイムスタンプでチェック出来ると思います(strtotime('-24 hour')より前の日時ならアウト)。

re999
質問者

補足

回答ありがとうございます。 >データベースであればレコードに作成日時の列があればいい データベースにdatetime型でレコード作成日時を保持しているのですが、 下記やり方で合ってるでしょうか? //hashを元にレコード作成日時取得 $hoge = "DBから取得"; //タイムスタンプに変換 $hoge = strtotime($hoge); //タイムスタンプを渡して 24h以内で条件式 if(strtotime('-24 hour', $hoge)){ また、24h以内にアクセスがなかったレコードは、 cron削除するしか方法がないのでしょうか? 仮にcron削除しか方法がないとすると(どうせcron削除するなら)、 条件式で判定せずに、cronを使ったやり方もアリなのでしょうか? →24h経った時点で該当レコード自体を削除することにより、hashからレコード取得ができなくなるので どういった方法が最適か分かんないので、教えてください 1.if文で条件判定してやるべき 2.cronでやっても良い 3.「if文」「cron」どちらでも良い

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 登録確認メールのリンクURLにメルアド記載はOK?

    1.ユーザーが登録したら、メールを送信 2.ユーザーがメールのリンク先をクリックしたら、認証 というのをやっています。 古いコードを見たら、 登録確認メールのリンクURLが、 http://○○/hoge.php?hash=△△&email=メールアドレス となっていました。 「&email=メールアドレス」 とメルアドがリンクURLに直接書かれているのが気になったのですが、 確認メールのリンクURLに、「メールアドレス」が含まれている実装って、 セキュリティ的に何か問題あるでしょうか? それとも、 ユーザーにだけ送信される内容なので、hashさえちゃんとしておけば これで大丈夫なのでしょうか?

    • ベストアンサー
    • PHP
  • 登録済パスワードの確認メールが受け取れません。

    ウイルスセキュリティのユーザーです。数日前まで稼動していましたが、不具合が生じて、アンインストール後、再インストールしたところ、登録設定する際、初回登録時のパスワードを忘れ、問い合わせを行いました。 しかし、初回登録時のメールアドレスは現在変更しており、パスワード確認の回答返信メールが届きません。現在の(変更後の)メールアドレスに回答を受け取るにはどうしたらよいでしょうか。

  • ヤフオクの登録確認メールがログインできない・・

    ヤフオクの新規登録をしているのですが、そのステップの際、 「登録メールアドレス確認」のメールを送信しました。 メールに記載されている案内に従って、登録メールアドレス確認のための手続きを行ってください とあって、送信されてきたメールから手続きを行おうとするのですが、 なぜかログインできません。IDとパスワードをいれてログインしてもすぐ消えてまたログインやり直し。 なにがいけないのでしょうか?また、ヤフオク側にこのことを抗議することは可能でしょうか?

  • Twitterの登録メールアドレスの確認ができない

    Twitterに登録したところ、登録したメールアドレスに確認メールが送信されたので、メールに書いてある通りリンクをクリックしたが、うまくいかない。 Twitterの上の、twitterのロゴと検索窓、そして「アカウントをお持ちの場合はログイン」と書かれてある部分しか表示されず、「アカウントをお持ちの場合はログイン」を押しても同じ画面が表示され、twitterのロゴを押すとログイン前のtwitterトップページに移動する。 どうすればメールアドレスの確認ができるのでしょうか? 確認しなくともある程度の機能は利用できるようですが、やはり気になります。

  • ホームページの登録確認メールについて

    登録確認メールを送信済みと標示されているのですがこちらには到着の確認が出来ていません。再度確認メールをお送り頂けませんか。早急にホームページの有料スペースを確保したいのです。宜しくお願い致します。

  • モバゲーからメール再登録確認とか来たのですが・・・

    携帯にメールで、急に、 「【モバゲー】メール再登録確認」 と言う題名でメールが送られてきました。 私は、モバゲーは使ったことが無く、急に送られてきてビックリしました。 (携帯は長い間使っているので、なんらかの時に、モバゲーを使ったかもしれないのですが、確か登録とかはしてないと思います。) 誰かが、私のメールアドレスと間違えて登録したのか、イタズラで登録したのかわかりません・・・ 内容は、メールアドレスを再登録しますと書いてあって、URLも乗っていました。クリックすると確認が完了しますとか書いてありました。 ちなみに、このようなメールはどのようなときに、モバゲーから送信されるものなのでしょうか?誰か知ってる方教えてください!

  • YAHOOの登録メールアドレスの確認について

    YAHOOの登録メールアドレスの確認ができません。昨日まで使用できていたのに今日になり使用できなくなりました。登録手続きが出来ないと入札も出品も出来ません。どのように設定すれば返信メールが届いて使えるようになるのでしょうか?ちなみに前の登録は___@yahoo.co.jpでしたが、今は使用できないらしくエラーになり___@ybb.co.jpで登録し送信するのですが、返信されてきません。どうしたらいいでしょうか?よろしくお願い致します。

  • Yahoo! IDで登録確認メールがこない

    こんにちは。 Yahoo! JAPAN IDを取得しようと思い、登録をしたのですが登録確認メールがきません。 Yahoo! JAPAN ID登録が完了しました。 登録メールアドレスにYahoo! JAPAN ID登録確認メールを送信しました。 と画面にでているのにきません。登録メールアドレスは間違ってないと思います。 画面に出ている登録メールアドレスをコピペして送信し、アドレスが間違ってないかをテストしました。 この後も登録メールアドレスがこないという理由で、新規で2回登録をやり直したのですがメールは届きません。 でもIDを削除した後にくる「利用終了のお知らせ」というメールは届きます。 なぜなのでしょうか。

  • NECの初期登録をするがメールが返ってこない

    昨日,LAVIEのN5700/R(Win10Home)を購入し,メール設定も完了し,他のパソコンやスマホからメール送信をして,バッチリ準備完了。さあ,NECのユーザー登録開始。同意して受付完了。あとはメールを待つだけ。しかし,待てど暮らせど,何回やり直しても設定用のメールは届かず。画面には,「メールが届かなかった場合。指定されたメールアドレスが間違っていたり、お客様のメールソフトの設定が、<@necp.co.jpからのメールを受信できる設定>になっていない場合があります。確認して、登録をやりなおしてください。」とあるので,後半の「@necp.co.jpからのメールを受信できる設定」をしようとOutlookの設定を見るのですが,どこにそれを許可する設定があるのかがわかりません。この点を教えてください!よろしくお願いします。 ※OKWAVEより補足:「NEC 121ware : メール」についての質問です

  • ipod登録確認メールはどこに送信されるの?

    最近ipodを買いました!そこでiTunseの Apple IDを取得しようとしたんですが途中段階で「登録確認メールを送信しました」ってなりました 。メールはいったいどこに送信されたんですか?教えて下さい