繁体   English   中英

我希望用户多次单击电子邮件激活链接时显示正确的消息

[英]I want correct message to be displayed when user clicks on email activation link multiple times

我正在为我的A级课程编写编程课程,但是我陷入了一个问题。 我希望你们中的一个能帮助我。

我正在设置成员系统,目前我处于电子邮件激活阶段。 通过将php和mysqli编码与连接的数据库一起使用,我已经能够设置电子邮件激活链接正常工作,以便当用户单击激活链接时,它通过将“ Active”数据库字段设置为“ 0”来激活用户的帐户。为“ 1”。

我唯一的问题是,如果用户再次单击电子邮件中的激活链接,因为该用户已经处于活动状态,我希望它显示消息“此帐户已被激活”; 这样用户就无法再次激活该帐户。

但是我无法显示此消息。 即使用户已经激活了帐户,它仍然显示消息“帐户已激活”。 有人知道我在做什么错吗?

下面是我的代码:

<?php
$user_to_be_activated  =   $_GET['user'];
$code_to_be_matched   =   $_GET['code'];
$code_activated = 1;

// don't use $mysqli->prepare here
$query = "SELECT TeacherUsername, Active, Code FROM Teacher WHERE TeacherUsername = ? AND Code = ? ";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("ss",$user_to_be_activated, $code_to_be_matched);
// execute query
$stmt->execute(); 
// get result and assign variables (prefix with db)
$stmt->bind_result($dbTeacherUsername, $dbActive, $dbCode);
//get number of rows
$stmt->store_result();
$counting = $stmt->num_rows();

if($counting == '1')
{

    if($dbActive == '1')
    {
        echo "This Account has already been Activated";
    }
    else{

    $updatesql = "UPDATE Teacher SET Active = ? WHERE TeacherUsername = ? AND Code = ?";                                            
    $update = $mysqli->prepare($updatesql);
    $update->bind_param("sss", $code_activated, $user_to_be_activated, $code_to_be_matched);
    $update->execute();
    $update->close();

    echo "Account is Activated";
}
}
else
{
    echo "The Code and Username doesn't match! Account is not Activated.";
}
?>
<?
$stmt->store_result();
$counting = $stmt->num_rows();

if($counting == '1')
{
    $stmt->fetch(); //added fetch here
    if($dbActive == '1')
    {
        echo "This Account has already been Activated";
    }
    else{

    $updatesql = "UPDATE Teacher SET Active = ? WHERE TeacherUsername = ? AND Code = ?";                                            
    $update = $mysqli->prepare($updatesql);
    $update->bind_param("sss", $code_activated, $user_to_be_activated, $code_to_be_matched);
    $update->execute();
    $update->close();

    echo "Account is Activated";
}
}
else
{
    echo "The Code and Username doesn't match! Account is not Activated.";
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM