我正在尝试创建一个“flash”成功消息,当用户成功更改密码时会弹出该消息。但是,我不希望这样做。
基本思路是,当人们输入新密码(并传递给数据库)时,它会回显到“成功更新密码”页面。但它只会回显一次(当用户刷新时,回显的消息将消失,并且在他们提交新密码之前不再显示)。
我试过四处寻找,但我似乎无法找到任何实际可行的脚本。
这是我的PHP函数,目前:
function updatePassword($conn, $newpwd, $username){
$newpwd = hash('md5', $newpwd);
mysqli_query($conn, "UPDATE users SET password = '$newpwd' WHERE username = '$username'");
}
干杯。
答案 0 :(得分:2)
我最近自己创造了一些东西,但代码可能会更好,但它确实有效。
function flash_message($message, $type = 'success') {
switch($type) {
case 'success':
$class = "success";
break;
case 'info':
$class = "info";
break;
case 'error':
$class = "error";
break;
}
$_SESSION['flash_message'] = "<p class='flash_message ".$class."'>".$message."</p>";
}
function show_flash_message() {
if (isset($_SESSION['flash_message'])) {
$message = $_SESSION['flash_message'];
unset($_SESSION['flash_message']);
return $message;
}
return NULL;
}
您在要显示它的页面上使用show_flash_message()
。如果没有消息,它将不显示任何内容。
您可以通过以下方式调用它:
function updatePassword($conn, $newpwd, $username){
$newpwd = hash('md5', $newpwd);
mysqli_query($conn, "UPDATE users SET password = '$newpwd' WHERE username = '$username'");
flash_message('Successfully changed your password');
}
如果要更改消息的显示,则可以使用不同的类。 (错误的用户名/密码是错误,发送的电子邮件可以是信息/成功等。)
答案 1 :(得分:2)
让我解释一下伪逻辑。
步骤:
1)成功完成密码更改后,将成功消息分配给会话变量。
$_SESSION['message'] = 'Password changed successfully.';
2)在重定向的成功页面上,回显一下。
if (isset($_SESSION['message'])) {
echo $_SESSION['message'];
unset($_SESSION['message']);
}
此外,unset()
它,因此,它将不再显示在其他时间。