gpt4 book ai didi

php - 邮箱和数据库验证码不同

转载 作者:行者123 更新时间:2023-11-29 18:05:55 26 4
gpt4 key购买 nike

 // Check input errors before inserting in database
if(empty($username_err) && empty($password_err) && empty($confirm_password_err) && empty($mobile_err)){
$ran_code=mt_rand(100000, 999999);
// Prepare an insert statement
$sql = "INSERT INTO users (username, password, email, mobile, code) VALUES (:username, :password, :email, :mobile, :code)";

if($stmt = $dbh->prepare($sql)){
// Bind variables to the prepared statement as parameters
$stmt->bindParam(':username', $param_username, PDO::PARAM_STR);
$stmt->bindParam(':password', $param_password, PDO::PARAM_STR);
$stmt->bindParam(':email', $param_email, PDO::PARAM_STR);
$stmt->bindParam(':mobile', $param_mobile, PDO::PARAM_STR);
$stmt->bindParam(':code', $code);
// Set parameters
$param_username = $username;
$param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
$param_email = $email;
$param_mobile = $mobile;
$code = $ran_code;

// Attempt to execute the prepared statement
if($stmt->execute()){
$_SESSION['username']=$email;
// Send registration confirmation link (verify.php)
$_SESSION['to'] = $email;
$_SESSION['subject'] = 'Account Verification ( paper.com )';
$_SESSION['body'] = '
Hello '.$username.',

Thank you for signing up!

Your verification code is'.$ran_code.'.';


require '../Mailer/hotmail.php';

header("location:confirmation.php?email=".$email);


} else{
echo "Something went wrong. Please try again later.";
}
}

// Close statement
unset($stmt);
}

// Close connection
unset($dbh);}

注册成功后,确认码将发送到电子邮件并存储在数据库中。我在电子邮件中收到一组 6 位代码,在数据库中收到完全不同的 5 位代码。我已经尝试了 10 多次,结果是相同的。每次我在电子邮件中收到新 key 时,该 key 与数据库中的 key 相同,即 32767。而且我正在做的是注册后检查我的电子邮件并检查数据库,代码不同,然后我删除该行并继续使用相同的电子邮件地址再次注册。我不认为这是问题所在,只是想让大家知道。

最佳答案

因为,您在这两种情况下传递了不同的值

你得到了随机数

 $ran_code=mt_rand(100000, 999999);

但是,您正在将其他内容保存到数据库

 $stmt->bindParam(':code', $code);

在上面的代码之后,您有下面的代码行,应该在上面(请注意,在电子邮件中您使用的是 $ran_code,它具有正确的值)

 $code = $ran_code;

而且,这就是您在电子邮件和数据库中获得不同值(value)的原因。要纠正您的问题,您需要将上面的代码移至

之后
$ran_code=mt_rand(100000, 999999);
$code = $ran_code; // move here

关于php - 邮箱和数据库验证码不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47847109/

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