Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有错误消息的PHP页面重定向仅在页面刷新后显示_Php_Html_Sql_Mysqli - Fatal编程技术网

带有错误消息的PHP页面重定向仅在页面刷新后显示

带有错误消息的PHP页面重定向仅在页面刷新后显示,php,html,sql,mysqli,Php,Html,Sql,Mysqli,所以我对其他页面使用相同的方法,效果很好。 例如,我在登录页面上使用它,在用户填写登录表单后,它调用一个php文件来查询数据库。如果查询失败,它将设置一个带有错误的会话变量,并将您重定向回登录页面。在登录页面中,我需要检查会话变量是否已设置,如果已设置,则显示错误消息 我正在重复使用这种显示错误消息的相同方式,对于尝试注册的用户,如果他们已经在这个页面上注册,那么查询数据库的php文件应该用错误重定向他们。现在这个方法和我的登录页面一样有效。但是,它仅在页面刷新后显示,这并不理想 下面是一个ph

所以我对其他页面使用相同的方法,效果很好。 例如,我在登录页面上使用它,在用户填写登录表单后,它调用一个php文件来查询数据库。如果查询失败,它将设置一个带有错误的会话变量,并将您重定向回登录页面。在登录页面中,我需要检查会话变量是否已设置,如果已设置,则显示错误消息

我正在重复使用这种显示错误消息的相同方式,对于尝试注册的用户,如果他们已经在这个页面上注册,那么查询数据库的php文件应该用错误重定向他们。现在这个方法和我的登录页面一样有效。但是,它仅在页面刷新后显示,这并不理想

下面是一个php文件,其中包含供用户注册的html,如果设置了该文件,则显示错误消息:

<?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);
?>


对于登录页面,我使用
标题(“Location:file_name.php”)但是如果我在这个页面上使用它,即使页面被刷新,它也不会显示错误。我对PHP还是一个新手,所以任何关于我可能做错了什么的见解都是非常棒的。

那么,你的意思是:

  • 有人转到包含第二个PHP块的文件
  • 数据库中已经有一个匹配的行
  • 脚本在会话中设置错误消息,并重定向到登录页面
  • 登录页面应该显示错误,但直到页面刷新后才会显示

  • 是这样吗?

    因为;会话仅在会话启动后设置。您的意思是,我没有为显示错误消息的页面调用会话_start()。如果你是这么想的,我确实调用了session start,但是如果有区别的话,它在页面顶部的一个单独的php块中。是的,代码中的一个ajax请求(未显示)将信息传递到名为changeromname.php的文件,这是你看到的第二个php块。当它转到数据库时,它会查看注册人的姓名是否已经存在,如果已经存在,它会设置$_SESSION['signUpError']消息并将他们重定向回他们尝试注册的页面。这个错误信息会显示在文件dentist_home.php中,这是位于顶部块posted上的代码,可能有一百万个东西。这里有一条线索,有很多可能: