带有错误消息的PHP页面重定向仅在页面刷新后显示
所以我对其他页面使用相同的方法,效果很好。 例如,我在登录页面上使用它,在用户填写登录表单后,它调用一个php文件来查询数据库。如果查询失败,它将设置一个带有错误的会话变量,并将您重定向回登录页面。在登录页面中,我需要检查会话变量是否已设置,如果已设置,则显示错误消息 我正在重复使用这种显示错误消息的相同方式,对于尝试注册的用户,如果他们已经在这个页面上注册,那么查询数据库的php文件应该用错误重定向他们。现在这个方法和我的登录页面一样有效。但是,它仅在页面刷新后显示,这并不理想 下面是一个php文件,其中包含供用户注册的html,如果设置了该文件,则显示错误消息:带有错误消息的PHP页面重定向仅在页面刷新后显示,php,html,sql,mysqli,Php,Html,Sql,Mysqli,所以我对其他页面使用相同的方法,效果很好。 例如,我在登录页面上使用它,在用户填写登录表单后,它调用一个php文件来查询数据库。如果查询失败,它将设置一个带有错误的会话变量,并将您重定向回登录页面。在登录页面中,我需要检查会话变量是否已设置,如果已设置,则显示错误消息 我正在重复使用这种显示错误消息的相同方式,对于尝试注册的用户,如果他们已经在这个页面上注册,那么查询数据库的php文件应该用错误重定向他们。现在这个方法和我的登录页面一样有效。但是,它仅在页面刷新后显示,这并不理想 下面是一个ph
<?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);
?>
对于登录页面,我使用
标题(“Location:file_name.php”)代码>但是如果我在这个页面上使用它,即使页面被刷新,它也不会显示错误。我对PHP还是一个新手,所以任何关于我可能做错了什么的见解都是非常棒的。那么,你的意思是:
有人转到包含第二个PHP块的文件
数据库中已经有一个匹配的行
脚本在会话中设置错误消息,并重定向到登录页面
登录页面应该显示错误,但直到页面刷新后才会显示
是这样吗?因为;会话仅在会话启动后设置。您的意思是,我没有为显示错误消息的页面调用会话_start()。如果你是这么想的,我确实调用了session start,但是如果有区别的话,它在页面顶部的一个单独的php块中。是的,代码中的一个ajax请求(未显示)将信息传递到名为changeromname.php的文件,这是你看到的第二个php块。当它转到数据库时,它会查看注册人的姓名是否已经存在,如果已经存在,它会设置$_SESSION['signUpError']消息并将他们重定向回他们尝试注册的页面。这个错误信息会显示在文件dentist_home.php中,这是位于顶部块posted上的代码,可能有一百万个东西。这里有一条线索,有很多可能: