我在让用户帐户进行验证时遇到问题。我让它插入数据,然后发送一个确认链接,但是当它在电子邮件中单击时,它不会将“活动”行从 0 更新到 1。我整晚都在搞砸这个,这可能很简单,但是无论哪种方式,如果有人可以提供帮助,我将不胜感激。
此外,如果有人可以提供有关制作这种注射证明的任何提示,我也会非常高兴。谢谢!
<?php
require ('classes/class.db.php');
require ('classes/class.pass.php');
try {
if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['email_hash']) && !empty($_GET['email_hash'])){
// Verify data
$search = "SELECT email, email_hash, active FROM users WHERE email='".$email."' AND hash='".$email_hash."' AND active='0'";
$match = $db->num_rows( $query );
if($match > 0){
$stmt = $db->prepare('UPDATE users (active) VALUES (:active) WHERE active = 0');
$status = $stmt->execute(array(
':active' => 1));
if( $status )
{
echo '<p>Your account has been activated, you can now login</p>';
}
}
}else{
echo '<p>Your account is already activated</p>';
}
} catch (PDOException $e) {
die($e->getMessage());
}
?>
更新#1
尝试了 Akam 的建议,但仍然遇到一些错误。这是我的陈述。
$stmt = $db->prepare("UPDATE users SET active ='1' where active = '0' and email=:email AND email_hash=:email_hash");
$status = $stmt->execute(array(
':email' => $_GET['email'],
':email_hash' => $_GET['email_hash']
));
更新#2
似乎问题在于$_GET['email_hash']
不能回显或存储在变量中。它不会从 signup.php 页面获取随机哈希字符串并将其传递到 verify.php 页面,但电子邮件地址可以很好地传递。我有点困惑,希望有人为我澄清这一点。谢谢。
更新#3
问题就像转向一样$_GET['email_hash']
简单$_GET['hash']
。再次感谢!