2013-01-12 175 views
0

這是用戶激活。MySQL查詢沒有更新後,但PHP顯示沒有錯誤

function activate($email, $email_code){ 
    $email = mysql_real_escape_string($email); 
    $email_code = mysql_real_escape_string($email_code); 

    if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1){ 
     mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
     return true; 
    }else{ 
     return false; 
    } 
} 

Activation.php

if (isset($_GET['success']) === true && empty($_GET['success'])===true){ 
    echo 'Account activated!'; 
} 
else if (isset($_GET['email'], $_GET['email_code']) === true){ 

    $email = trim($_GET['email']); 
    $email_code = trim($_GET['email_code']); 

    if(email_exists($email) === false){ 
     $errors[] = 'Oops, something went wrong!'; 
    }else if (activate($email, $email_code === false)){ 
     $errors[] = 'We have problems activating your account!'; 
    } 
    if (empty($errors) === false){ 
     echo output_errors($errors); 
    }else{ 
     header('Location:activate.php?success'); 
     exit(); 
    } 
}else{ 
    header('Location:go.php'); 
    exit(); 
} 

它說 '帳戶激活!'正如我所迴應的,但它並沒有改變表中的字段。它根本沒有激活。這裏有什麼問題?

+0

功能你能更詳細點嗎? –

+0

這是什麼部分'&&空($ _ GET ['success'])=== true'爲? – codingbiz

回答

0

你必須改變這樣的

function activate($email, $email_code){ 
$email = mysql_real_escape_string($email); 
$email_code = mysql_real_escape_string($email_code); 

if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1){ 
    if(mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'")){ 
     return true; 
     } 
    else{ 
    return false; 
    } 
    } 
} 
+0

不,沒有工作 – Yoosuf

相關問題