![](/img/trans.png)
[英]PHP array from cookie info: only shows up after you refresh the page?
[英]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">×</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還是很陌生,所以任何對我可能做錯事的見識都將是很棒的。
因此,您要說的是:
那正確嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.