0

重複の可能性:
1 時間前から選択する SQL クエリ?

私の現在のcronジョブスクリプトはデータベースからすべての行を削除しますが、cronjobの実行時にユーザーがパスワードをリセットしたい場合は良くありません。データベースに行が追加されたときにmysqlで確認し、そこにある行のみを削除する方法 もっと1時間以上?

私のcron_reset.php

<?php
require_once('mysql_config.php');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) 
{
    die('Failed to connect to server: ' . mysql_error());
}

$db = mysql_select_db(DB_DATABASE);
if(!$db) 
{
    die("Unable to select database");
}


function clean($str) 
{
    $str = @trim($str);
    if(get_magic_quotes_gpc()) 
    {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
}

$password = clean($_GET['password']);
if($password != $cron_password)
{
    die('Access Denied');
}
else
{
    $qry = "DELETE FROM cron_reset";
    $result = mysql_query($qry);
    if($result) 
    {
        die('Success');
    }
    else 
    {
        die(mysql_error());
    }
}
?>

これは、電子メール + リセット コードをデータベースに追加する行です。

            $qry = "INSERT INTO cron_reset(email, code) VALUES('$email','$code')";
            $result = @mysql_query($qry);
4

1 に答える 1

1

DBスキーマでは、要求の時刻を格納するための新しい列を追加し(たとえば、ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)、クエリにwhere句を追加する必要があります(WHERE ts <NOW()-INTERVAL 1 HOUR)

于 2012-12-06T02:03:17.890 に答える