私は、訪問者がアカウントを作成できるサイトで働いています。そのためには、プロセスの最後に電子メール アドレスを確認する必要があります。
アカウントが作成される前に、電子メール、パスなどの入力された値は一時的に特別なテーブルに保持されます。つまり、訪問者は 1 時間以内に電子メールを開いてリンクをクリックする必要があります。そうしないと、その行が削除され、ボットや悪人、または単純に怠け者からの「ゴミ」を防ぐことができます。
私のアイデアは、ユーザーが混乱を解消できるようにすることでした。これがその方法です。ユーザーが送信されたリンクをクリックすると、一時的に保存された値を含むテーブルの行がメンバーの実際のテーブルに移動し、別の関数がクリーンアップします「古い」行、つまり 1 時間以上前に挿入された行を表示します。
これは私の現在のコードです:
$stmt3 = $dbc->prepare('DELETE FROM temp_storage WHERE time() - time > 3600');
$stmt3->execute();
(時刻は、行が挿入された時刻が格納される列です)
ただし、このコードは明らかに機能していません。SELECT FROM temp_storage を使用して回避策を実行し、行が挿入されてから時間が経ちすぎていないかどうかを確認できることはわかっていますが、なぜこのようにできないのでしょうか?
今私の質問は、そうですか、それとも間違った方法でやっていますか?