回显成功消息一次PHP


Echo Success Message Once PHP

我正在尝试创建一个"flash"成功消息,当用户成功更改密码时,该消息会弹出。但是,它不起作用,我希望它。

基本思想是,当人们输入他们的新密码(并将其传递到数据库)时,它将返回到"成功更新密码"页面。但它只会回显一次(当用户刷新时,回显的消息将消失,并且在提交新密码之前不会再次显示)。

我试着四处搜索,但我似乎找不到任何能按照我希望的方式工作的脚本。

这是我的PHP函数,目前:

function updatePassword($conn, $newpwd, $username){
    $newpwd = hash('md5', $newpwd);
    mysqli_query($conn, "UPDATE users SET password = '$newpwd' WHERE username = '$username'");
}

干杯。

让我来解释一下伪逻辑。

步骤:

1) 成功更改密码后,将成功消息分配给会话变量。

$_SESSION['message'] = 'Password changed successfully.';

2) 在重定向的成功页面上,对此进行回应。

if (isset($_SESSION['message'])) {
 echo $_SESSION['message'];
 unset($_SESSION['message']);
}

此外,unset()它,因此,它将不会在其他时间再次显示。

我最近自己创建了一些东西,虽然代码可能会更好,但它确实有效。

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');
}

如果您想更改消息的显示,则不同的类用于。(错误的用户名/密码是一个错误,发送的电子邮件可能是信息/成功等)