gpt4 book ai didi

php - 验证电子邮件确认

转载 作者:行者123 更新时间:2023-11-30 01:26:47 26 4
gpt4 key购买 nike

我在验证用户帐户时遇到问题。我让它插入数据,然后发送一个确认链接,但是当在电子邮件中单击它时,它不会将“事件”行从 0 更新到 1。我整晚都在搞乱这个,这可能很简单,但是无论哪种方式,如果有人可以提供帮助,我将不胜感激。

此外,如果有人可以提供任何有关制作此注入(inject)证明的提示,我也会非常高兴。谢谢!

<?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'] 即可。再次感谢!

最佳答案

您也可以通过一个查询来完成所有操作,如果您在更新中写入相同的条件,则无需第一次查询:

"UPDATE users SET active ='1' where active = '0' and email=:email AND hash=:email"

关于php - 验证电子邮件确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17917247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com