У меня возникла проблема с подтверждением учетных записей пользователей. Я заставляю его вставлять данные, а затем отправлять ссылку для подтверждения, но когда по ней щелкают в электронном письме, она не обновляет «активную» строку с 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
Пробовал то, что предложил Акам, но все еще получаю некоторые ошибки. Вот что у меня есть для моего утверждения.
$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']
. Спасибо еще раз!
else{echo $db->errorInfo()}
- person   schedule 29.07.2013