所以我对其他页面使用相同的方法,它工作得很好。 例如,我在登录页面上使用它,在用户填写登录表单后,它调用一个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的新手,所以任何洞察我可能做错的事情都会很棒。
答案 0 :(得分:0)
所以,你所说的是:
是吗?