我当前的cron作业脚本从数据库中删除所有行,如果用户想要在cronjob运行时重置密码,这是不好的,当行添加到数据库时我如何检查mysql,这样就只删除了在那里待了一个多小时?
我的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);
答案 0 :(得分:1)
在数据库架构中,您必须添加一个新列来存储需求的时间(例如,ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)并在查询中添加where子句(WHERE ts&lt; NOW() - 间隔1小时)