Notice: Array to string conversion in C:\wamp\www\myphpfile\reset_pass_form.php on line <i>33</i>
An email has been sent for you to reset your password!
我已经在我的电子邮箱中检查了我是否获得了正确的user_id =值&amp; reset_token = value
reset_pass_form.php
if ( !empty($_POST) && !empty($_POST['forgot_emailpass']) ) {
$email = escape_data($_POST['forgot_emailpass']);
$result = $heidisql->prepare("SELECT * FROM users WHERE email_address='$email'");
$result->execute();
$user = $result->fetch();
If($user) {
session_start();
$reset_token = random_str(30);
$new_hashtoken = bin2hex($reset_token);
$sql = "UPDATE users "
. "SET reset_token= '$new_hashtoken', "
. "reset_allocated_time= now() "
. "WHERE user_id='$user' "; // <- Error is here!
$reset_pass = $heidisql->prepare($sql);
$reset_pass->execute();
// Send registration confirmation link (reset.php)
$to= $email;
$from = "smtp.intnet.mu";
$subject = 'Reset Password';
//Compose a simple HTML email msg
$message = "<html><body>";
$message .= "<h1 style='color: darkblue;'> Hi, there you</h1>";
$message .= "<p><b>Email:</b> $email</p>";
$message .= "<p>To reset your password, please click on the given link below: </p>";
$message .= "<a href='http://localhost:8080/myphpfile/reset_pass_form.php?user_id=".$user['user_id']."&reset_token=".$new_hashtoken. " '> Click Here</a>"; //http://localhost:8080/myphpfile/reset_pass_form.php?
$message .= "</body></html>";
$headers = 'From:' .$from. "\r\n" . // Creating the email headers // To send an HTML mail, content-type must be set to HTML
'Reply-To: '.$from. "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $message, $headers)) { // Sending email // email_to, subject, body,email_from
echo 'An email has been sent for you to reset your password!'; // As you can see above the email is being sent
exit();
} else {
echo'Server failed to sent message, please try again later.';
exit();
}
}
}
在我的数据库中,我的 reset_token 仍为为空,而不是$ new_hashtoken值,我的 reset_allocated_time 也是如此< / p>
答案 0 :(得分:0)
请print_r
$user
变量并使用where子句中数组的键。
$sql = "UPDATE users "
. "SET reset_token= '$new_hashtoken', "
. "reset_allocated_time= now() "
. "WHERE user_id=$user['user_id'] "; // <- user id or what ever the key is
答案 1 :(得分:0)
$user = $result->fetch();
可能会返回一个数组。它可以是用户数组或用户数组。尝试var_dump($user);
检查它所拥有的内容。
如果它返回一组用户:
$user[0]->id; // in case it was an array of user objects
OR
$user[0]['id']; // in case it was an array of user arrays
如果它返回用户数组:
$user['id'];
此外,我的other answer可能会帮助您了解如何更好地访问数组和对象。