当前位置: 首页 > 知识库问答 >
问题:

用户点击激活链接后如何激活账户?

西门凯康
2023-03-14

多亏了来自NickFroty的youtube教程,我能够在php中创建一个合适的注册系统,我已经能够将他的代码从mysql转换为mysqli,并且能够在用户注册后通过电子邮件发送激活链接。

下面的代码将在数据库中插入注册详细信息,并在用户注册后将消息和激活链接发送到用户的电子邮件。

$code = md5(rand());

$insertsql = "
INSERT INTO Teacher
(TeacherForename, TeacherSurname, TeacherEmail, TeacherAlias, TeacherUsername, TeacherPassword, Code)
VALUES
(?, ?, ?, ?, ?, ?, ?)
";
if (!$insert = $mysqli->prepare($insertsql)) {
// Handle errors with prepare operation here
}                                           

$insert->bind_param("sssssss", $getfirstname, $getsurname,
$getemail, $getid, $getuser,
$teacherpassword, $code);

$insert->execute();

if ($insert->errno) {
// Handle query error here
}

$insert->close();

$site = "http://helios.hud.ac.uk/......../Mobile_app";
$webmaster = "Mayur Patel <.......@hud.ac.uk>";
$headers = "From: $webmaster";
$subject = "Activate Your Account";
$message = "Thanks for Registering. Click the link below to Acivate your Account. \n";
$message .= "$site/activate.php?user=$getuser&code=$code\n";
$message .= "You must Activate your Account to Login";

if(mail($getemail, $subject, $message, $headers)){
$errormsg = "You have been Registered. You must Activate your Account from the Activation Link sent to <b>$getemail</b>";
$getfirstname = "";
$getsurname = "";
$getid = "";
$getuser = "";
$getemail = "";
}

但是我现在有个问题。如果我点击链接,它会将用户导航到activate.php页面。

我的问题是:在用户点击激活链接后,它如何激活用户的帐户?我需要它能够通过在上面的php$message中查找来识别用户的用户名和激活码“$site/activate.php?user=$getuser”

"UPDATE Teacher SET Active='1' WHERE TeacherUsername = '$getuser'"
"SELECT * FROM Teacher WHERE TeacherUsername='$getuser' AND Active='1'"

激活。php页面只显示一条消息,说明帐户已激活。若用户已经被激活,那个么我希望它显示一条消息,说明用户已经被激活。


共有3个答案

贡烨烁
2023-03-14

我建议您不要使用TeacherUserName来选择您的老师。

您的表应该包含一列TEACHER\u ID(int,auto\u increment):想象一下,如果两个TEACHER具有相同的名称?

假设教师有不同的名字,您可以使用hash_hmac函数创建一个安全代码:

$code = hash_hmac('sha1', 'username', 'YOUR_SECRET_KEY');

你可以:

>

  • 发送邮件时生成此代码(name='Tom', code='ARI3428UZE')

    当用户点击链接时,你只需要获取用户名(name='Tom'),再次创建代码(newcode='ARI3428UZE')hash_mac

    测试代码==newcode

    如果这两个代码是相同的您可以更新您的表作为您的建议

    最好的方法是使用教师ID而不是教师姓名。

  • 欧阳子石
    2023-03-14

    注册时:

    创建一个变量$随机=rand(1,9);

    向他的电子邮件地址发送电子邮件。在他的电子邮件链接中附上代码。

    www.yourdomain.com/activate.php?username=teachername&code=randomcodehere
    

    把这个放进去。php

    $user_to_be_activated       =   $_GET['username'];
    $code_to_be_matched     =   $_GET['codehere'];
    
    $query      =   mysql_query("SELECT * FROM Teacher WHERE teachername='$user_to_be_activated' AND activecode='$code_to_be_matched'");
    $counting   =   mysql_num_rows($query);
    
    if($counting    ==  '1')
    {
        mysql_query("UPDATE Teacher SET accountactive='1'"); <-- Set this to 0 when registering
    }
    else
    {
        echo"The code and Username doesn't match!";
    }
    

    因此,当他点击验证电子邮件,您的网站将检查用户名和代码从数据库,如果他们是正确的,然后设置激活为1.我知道那里有很多代码错误,需要纠正和修改,但我是一个新的开发人员,这应该给你一个提示,谢谢。

    艾学海
    2023-03-14

    这是我如何编码激活的。php:

    代码:

    $sUser = $_GET['username'];
    $sCode = $_GET['code'];
    
    //MYPRIVATEKEY defined on a conf.php or else
    $sEncodedUser = hash_hmac('sha1', $sUser, 'MYPRIVATEKEY');
    
    if($sEncodedUser == $sUser) {
        $sQuery = "UPDATE USER SET activated=1 WHERE USERNAME = " . escape($sUser);
        //RUN $sQuery;
        echo 'Account activated !';
    } else {
        echo 'Problem when activating your account';
    }
    
     类似资料:
    • 我试图创建一个激活页面,以便当用户点击他们的激活链接时,它将引导用户到activate.php页面,并显示一条消息,说明阉羊帐户是否激活。 我的问题是,它一直显示消息“代码和用户名不匹配!帐户未激活。”它根本不显示成功消息“帐户已激活”,即使已单击激活链接。 此外,如果识别了正确的用户名和代码,数据库中的“活动”列应该更改为“1”,但它仍然显示“0”,这意味着帐户仍然不活动。 我的问题是,为什么它

    • 目前,用户注册后立即就能完全控制自己的账户(第 7 章)。本节,我们要添加一步,激活用户的账户,从而确认用户拥有注册时使用的电子邮件地址。为此,我们要为用户创建激活令牌和摘要,然后给用户发送一封电子邮件,提供包含令牌的链接。用户点击这个链接后,激活这个账户。 我们要采取的实现步骤与注册用户(8.2 节)和记住用户(8.4 节)差不多,如下所示: 用户一开始处于“未激活”状态; 用户注册后,生成一个

    • 在 3.1创建用户 中,我们注册了一个用户,并且产生了激活码,这个时候,我们得到激活码,怎么激活用户呢? 其实很简单,看代码 try { // 根据 userid 查询用户 $user = Sentry::findUserById(1); // 使用激活码激活用户 if ($user->attemptActivation('产生的激活码')) {

    • 当实例的试用期结束时,Navicat Monitor 需要令牌以继续监控该实例。令牌可以作为永久许可证或订阅购买。若要管理你的令牌并许可你的实例,请前往“配置”->“激活令牌密钥和许可实例”。 【注意】永久许可证和订阅方案不能在同一个 Navicat Monitor 上使用。在更改激活方法之前,你需要取消激活令牌密钥或退出你的 Navicat ID。 永久许可证 如果你购买了永久许可证,你将收到一

    • 示例:http://undeniable.info/img/temp_ss.png 我使用的是用户审批系统,因此说您的帐户处于活动状态的消息根本不合适。我们仍然希望我们的用户确认他们的电子邮件,因此我想将邮件“帐户激活”更改为“帐户电子邮件验证”,并将“激活您的帐户”更改为“验证您的帐户电子邮件”或类似的内容。 在我的整个public_html dir中搜索这些帐户激活的消息时,不会返回任何内容,

    • 问题内容: 在Twitter Bootstrap导航栏中以粗体显示活动链接的标准方法是什么?显然,链接通过获得“活动”类而获得活动外观。例如,下面的链接是活动的。当我单击导航栏中的任何链接时,是否应该使用jQuery从元素中删除所有类,然后将该类添加到我已确定的链接中? 编辑 :我包括 链接之后。当我单击链接时出现警报,但是“活动”类未添加到链接中。 这是我所有的导航栏HTML: 问题答案: 您需