【发布时间】:2013-09-13 01:32:33
【问题描述】:
目前我正在使用此代码创建一个新表并插入/更新用户验证码:
if ($result) {
echo "$captcha";
$queryInsertCaptcha = mysql_query ( "INSERT INTO xf_captcha (username, captcha) VALUES ('$user', '$captcha') ON DUPLICATE KEY UPDATE captcha = '$captcha'" );
} else {
echo "Tabelle muss noch erstellt werden.";
$queryCreateCaptchaTable = mysql_query ( "CREATE TABLE IF NOT EXISTS `xf_captcha` (
`username` varchar(255) NOT NULL default '',
`captcha` varchar(255) NOT NULL default '',
'timestamp',
PRIMARY KEY (`username`) );
");
}
现在我想添加一个时间戳,因为我想阻止早于 x 的验证码。
如何使用默认的 CURRENT_TIMESTAMP 创建 MySQLs TIMESTAMP 类型?
如果“ON DUPLICATE KEY UPDATE”运行,我如何告诉 MySQL 更新时间戳? 还是应该删除数据并插入新数据?
【问题讨论】:
-
小心! 您的查询容易受到SQL injection 的攻击。此外,
mysql_*函数是old and deprecated and should not be used anymore。请看PDO或MySQLi,哪个更好MySQL API choices。 -
你为什么使用 SQL 来做这个?将验证码存储到会话中即可。
-
这就是我想要使用的。只是不知道如何通过创建它。 php.
-
关于会话。我是一个完整的 php 菜鸟,但据我所知,会话仅适用于 cookie 等相同的浏览器。该脚本由一个 java 应用程序运行,它告诉用户他的验证码,这允许他在论坛中注册。