我目前正在使用下面的代码片段,它目前使用activatin代码更新数据库,但我希望它只检查是否已使用了activatino代码,如果是这样,则显示错误消息如果未使用错误消息直接用户到下一个表单。
$sql = "SELECT `Check_Activation`
FROM `members` WHERE (`Check_Activation` = $activation_code )
AND (`Activation` = )";
if ($sql->affected_rows > 0)
{
$username = substr($username, 0, 1);
if($username == 1) {
header( 'Location: form-one.php?membernumber='
.$usernameurl.'&activation_code='
.$activation_codeurl.'' ) ;
} elseif($username == 2) {
header( 'Location: form-two.php?membernumber='
.$usernameurl.'&activation_code='
.$activation_codeurl.'' ) ;
} elseif($username == 3) {
header( 'Location: form-three.php?membernumber='
.$usernameurl.'&activation_code='
.$activation_codeurl.'' ) ;
}
}
答案 0 :(得分:0)
您可以通过将逻辑应用于MySQL数据库表结构来实现此目的。
例如;
CREATE TABLE used_codes (uid SMALLINT(5) NOT NULL, code VARCHAR(20) NOT NULL);
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| uid | smallint(5) | NO | | NULL | |
| code | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set
现在,当使用代码时,将其插入此表中;
INSERT INTO used_codes (uid, code) VALUES (?,?)
当有人尝试使用代码时,只需查询此MySQL数据库表WHERE code = ?
,如果返回一行,则代码已被使用。
或者,您可以在Members
中使用一个标记,该标记将名为code_used
的列的值设置为1(默认值为0 - 未使用)
并查询我们已存储的内容
SELECT `column` FROM `Members` WHERE (`User_Activated` = 1) AND (`Activation` = ?)
我认为您User_Activated
的版本是Check_Activation
,但我不确定。
如果该查询返回一行,我们知道此激活码已被使用。
希望有所帮助。
答案 1 :(得分:0)
您是使用随机激活码还是让用户创建激活码?
您最好使用AJAX检查之前是否使用过用户名并让用户知道,以便他们可以更改用户名。