gpt4 book ai didi

php - 一切都很顺利,除非它给了我一个真实的结果并且没有任何改变

转载 作者:行者123 更新时间:2023-11-29 16:14:07 25 4
gpt4 key购买 nike

我正在尝试编写一个密码更改脚本。一切顺利。除此之外。它告诉我它成功了,但没有任何变化。我的 mysql 中的加密代码没有任何变化,而且当我尝试登录时,我不能使用新密码,只能使用旧密码。这是代码

<?php
session_start();
require_once('inc/functions.inc.php');
if (!isset($_POST['submit'])) {
die(header("Location: settings.php"));
}
if (isset($_SESSION['updatePasswordError'])) {
unset($_SESSION['updatePasswordError']);
}
$_SESSION['updatePasswordError'] = array();

if (isset($_SESSION['updatePasswordSuccess'])) {
unset($_SESSION['updatePasswordSuccess']);
}
$_SESSION['updatePasswordSuccess'] = array();

if (strlen($_POST['newpassword']) < 8) {
$_SESSION['updatePasswordError'][] = "New Password must be at least 8 characters";
}
else if ($_POST['newpassword'] != $_POST['confirmnewpassword']) {
$_SESSION['updatePasswordError'][] = "Passwords don’t match";
}

$mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);
if ($mysqli->connect_errno) {
error_log("Cannot connect to MySQL: " .
$mysqli->connect_error);
return false;
}
$incomingOldPassword = $mysqli->real_escape_string(htmlspecialchars($_POST['currentpassword']));
$query = "SELECT * from Customer WHERE id = '{$user->id}'";
if (!$result = $mysqli->query($query)) {
$_SESSION['updatePasswordError'][] = "Select Error. Try Again";
error_log("Cannot retrieve account for {$user}");
return false;
}
// Will be only one row, so no while() loop needed
$row = $result->fetch_assoc();
$dbPassword = $row['password'];
if (crypt($incomingOldPassword,$dbPassword) != $dbPassword) {
$_SESSION['updatePasswordError'][] = "Old Password Incorrect";
}

if (count($_SESSION['updatePasswordError']) > 0) {
die(header("Location: settings.php"));
} else {
$cryptednewPassword = crypt($_POST['newpassword']);
$newPassword = $mysqli->real_escape_string($cryptednewPassword);
$result = "$updatePassword($newPassword)";
if ($result) {
$_SESSION['updatePasswordSuccess'] [] = "Successfully Updated";
die(header("Location: settings.php"));
} else {
die(header("Location: settings.php"));
}
}


function updatePassword($newPassword) {
$mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);
$query = "UPDATE customer SET password = ? WHERE id = $user->id";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $newPassword);
$result = $stmt->execute();
$mysqli->close();
return $result;
}
?>

如果我尝试使用不正确的密码、不匹配的密码或少于 8 个字符,则会收到错误消息。但除此之外一切似乎都很好

最佳答案

您没有调用 updatePassword() 函数。这一行:

$result = "$updatePassword($newPassword)";

不调用函数。它只是创建一个包含变量 $updatePassword$newPassword 值的字符串。由于 $updatePassword 不存在,因此相当于编写:

$result = "($newPassword)";

您还应该收到有关 undefined variable 的警告消息。

调用该函数的方法是:

$result = updatePassword($newPassword);

不要将函数调用放在引号内,也不要将 $ 放在函数名称之前。

您还需要在主脚本中设置$user,并将其作为参数传递给函数或在函数内使用global $user;

关于php - 一切都很顺利,除非它给了我一个真实的结果并且没有任何改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990654/

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