$tmpuser = $this->Tmpuser->find('first', array('conditions' => array('cryptemail' => $this->params['pass']['0'], 'date_add(created,interval 24 hour) > now()')));
会員登録する際によくあるような24時間のみアクセス可能なURLを作成してみます。何がベストなのかわからないので試行錯誤してみました。
本登録用のユーザーテーブルとは別に仮登録用のユーザーテーブルを用意。仮登録用テーブルに登録日フィールドをつくっておいて、後で検証するというやり方。
MySQLならば
date_add(created, interval 24 hour) > now()
で24時間以内かどうかを判定できる。
ただこれだと、MySQL用の命令をハードコーディングすることになるのでDBエンジンが変わったときとかに面倒くさそう。
ではTTLフィールドを作成し、登録日時+24時間のUnixタイムスタンプで持たせてみる。これだと単純比較のみで期限切れ判定ができる。
登録時に
strtotime(‘+1 day’)
これをTTLフィールドに設定すると後々削除するときとかにも使えるので便利だ。