簡體   English   中英

PHP頁面重定向並顯示錯誤消息,僅在頁面刷新后顯示

[英]PHP page redirect with error message only shows up after page refresh

因此,我將相同的方法用於其他頁面,並且效果很好。 例如,我在登錄頁面上使用它,在用戶填寫登錄表單后,它將調用一個php文件來查詢數據庫。 如果查詢失敗,則將會話變量設置為錯誤,然后將您重定向回登錄頁面。 在登錄頁面上的什么地方,我要檢查是否設置了該會話變量,如果已設置,則顯示錯誤消息。

對於正在嘗試注冊的用戶,如果他們已經在此頁面上進行注冊,我將重用這種顯示錯誤消息的方式,那么查詢數據庫的php文件應該將錯誤重定向。 現在,這種方法就像我的登錄頁面一樣有效。 但是,它僅在刷新頁面后顯示,這是不理想的。

這是一個包含html的php文件,供用戶注冊,並顯示錯誤消息(如果已設置):

<?php
 if(isset($_SESSION['signUpError'])) {
   $error = $_SESSION['signUpError'];
   unset($_SESSION['signUpError']);
   echo '<div class="alert alert-warning alert-dismissible" 
   role="alert" id="logError" style="width:600px; margin-left:auto; margin-right:auto;">
   <span type="button" class="close" data-dismiss="alert" aria-
   label="Close"><span aria-hidden="true">&times;</span></span>
   <strong>' . $error . '</strong></div>';
 }else{
   $error = "";
 }
?>

注冊后會調用該php文件:

<?php
  session_start();
  include("../includes/databaseHandler.inc.php");

  $title = $_POST['title'];
  $newTitle = $_POST['newTitle'];
  $id = $_POST['id'];
  $joinName=  "%".$_POST['joinName']."%";

if($stmt = mysqli_prepare($conn, "SELECT title FROM rooms WHERE title LIKE ?")){
    mysqli_stmt_bind_param($stmt, 's', $joinName);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    if($row = mysqli_fetch_assoc($result)){
    $_SESSION['signUpError'] = "This Dentist/Hygienist is already assigned to a room!";
    header('Refresh:5; url = ../dentist_home.php');
    exit;
  }
}

if($stmt = mysqli_prepare($conn, "UPDATE rooms SET title = ? WHERE title = ? AND id = ?" )){
  mysqli_stmt_bind_param($stmt, "sss", $newTitle, $title, $id);
  mysqli_stmt_execute($stmt);
  $result = mysqli_stmt_get_result($stmt);
}

mysqli_close($conn);
?>

對於登錄頁面,我使用header("Location: file_name.php"); 但是,如果我在此頁面上使用該代碼,即使刷新頁面也完全不會顯示錯誤。 我對PHP還是很陌生,所以任何對我可能做錯事的見識都將是很棒的。

因此,您要說的是:

  1. 有人轉到包含第二個PHP塊的文件。
  2. 數據庫中已經有匹配的行。
  3. 您的腳本在會話中設置錯誤消息,然后重定向到登錄頁面。
  4. 登錄頁面應該顯示錯誤,但是直到刷新頁面后才顯示。

那正確嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM