Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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_Redirect - Fatal编程技术网

Php 标头位置在服务器上不起作用

Php 标头位置在服务器上不起作用,php,redirect,Php,Redirect,嗨,朋友们,我试图在用户使用heade location登录后重定向页面,但它不起作用,无法理解原因 这是代码 <?php include "config.php"; ?> <?php session_start(); error_reporting(0); ini_set('display_errors', 0); if(isset($_SESSION['username'])){ header("Location: user_details.ph

嗨,朋友们,我试图在用户使用heade location登录后重定向页面,但它不起作用,无法理解原因

这是代码

<?php include "config.php"; ?>
 <?php session_start(); 
   error_reporting(0);
  ini_set('display_errors', 0);
    if(isset($_SESSION['username'])){
   header("Location: user_details.php");
   }
 ?>

这是我用php登录的html

 <html>
    <head>
     </head>
       <body>
           <div id="form">
              <form action="" method="POST">
              <div class="login-block">
        <h1>Login</h1>
        <input type="text" value="" placeholder="Username" id="username" name="user"/>
        <input type="password" value="" placeholder="Password" id="password" name="pass"/>
        <button type="submit" id="btn" value="Login" name="login">Submit</button>
         <?php
            if(isset($_POST['login']))
               {
                  $username=$_POST['user'];
                  $password=$_POST['pass'];
                  $username=mysqli_real_escape_string($conn,$username);
                  $password=mysqli_real_escape_string($conn,$password);
                  $password=md5(mysqli_real_escape_string($conn,$password));
                  $query="SELECT * FROM user WHERE username = '{$username}' and password='{$password}'";
                  $select_user_query=mysqli_query($conn,$query);
                  if(!$select_user_query)
                       {
                          die("Connection failed".mysqli_error($conn));
                       }
                while($row=mysqli_fetch_array($select_user_query))
                    {
                       $db_user_id=$row['id'];
                       $_SESSION['username']=$row['username'];
                       $db_user_email=$row['email'];
                       $db_user_password=$row['password'];
                     }
                if($username ===  $_SESSION['username'] && $password ===$db_user_password)
                    {
                       header("location: titles.php");
                     }

                  else
                 {
                     echo "<p style='color:#FF7B81'> enter correct username and password <p>";
                  }
                }
         ?>
    </div>
  </form>
</div>

登录
提交

这条线永远不会起作用:

   header("location: titles.php");
as头必须在任何形式的输出之前发送。通常的做法是将isset($_POST['submit'])放在HTML块上方,并分配您可能希望放入HTML中供以后使用的变量

尝试重新格式化代码,如下所示:

<?php
        if(isset($_POST['login']))
           {
              $username=$_POST['user'];
              $password=$_POST['pass'];
              $username=mysqli_real_escape_string($conn,$username);
              $password=mysqli_real_escape_string($conn,$password);
              $password=md5(mysqli_real_escape_string($conn,$password));
              $query="SELECT * FROM user WHERE username = '{$username}' and password='{$password}'";
              $select_user_query=mysqli_query($conn,$query);
              if(!$select_user_query)
                   {
                      die("Connection failed".mysqli_error($conn));
                   }
            while($row=mysqli_fetch_array($select_user_query))
                {
                   $db_user_id=$row['id'];
                   $_SESSION['username']=$row['username'];
                   $db_user_email=$row['email'];
                   $db_user_password=$row['password'];
                 }
            if($username ===  $_SESSION['username'] && $password ===$db_user_password)
                {
                   header("location: titles.php");
                 }

              else
             {
                 $error = "<p style='color:#FF7B81'> enter correct username and password <p>";
              }
            }
     ?>

<html>
<head>
 </head>
   <body>
       <div id="form">
          <form action="" method="POST">
          <div class="login-block">
    <h1>Login</h1>
    <input type="text" value="" placeholder="Username" id="username" name="user"/>
    <input type="password" value="" placeholder="Password" id="password" name="pass"/>
    <button type="submit" id="btn" value="Login" name="login">Submit</button>
<?PHP if(isset($error)){ echo $error; } ?>
</div>
在分配任何会话变量之前

试试这个

您必须启动对象

// Add this start of file after <?php
ob_start();
//在

登录
提交

在重定向之前,不能将输出发送到浏览器。在头重定向之后,还应该有一个出口。一旦输出启动,将无法工作。请尝试使用@Rasclatt。一旦用户正确登录,我想重定向,因此在输出后,只有我可以重定向echo“”;您可以使用@Kaylined的答案修复html的最后一部分,并在开头添加
session\u start()
。您也可以随机使用session,在使用session vars之前,您需要添加session\u start()。我已经编辑了一些内容,其中包括输出缓冲不仅仅是
ob\u start()
,而这个代码片段可以解决这个问题,真正有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!
// Add this start of file after <?php
ob_start();
 <html>
    <head>
     </head>
       <body>
           <div id="form">
              <form action="" method="POST">
              <div class="login-block">
        <h1>Login</h1>
        <input type="text" value="" placeholder="Username" id="username" name="user"/>
        <input type="password" value="" placeholder="Password" id="password" name="pass"/>
        <button type="submit" id="btn" value="Login" name="login">Submit</button>
         <?php
            if(isset($_POST['login']))
               {
                  $username=$_POST['user'];
                  $password=$_POST['pass'];
                  $username=mysqli_real_escape_string($conn,$username);
                  $password=mysqli_real_escape_string($conn,$password);
                  $password=md5(mysqli_real_escape_string($conn,$password));
                  $query="SELECT * FROM user WHERE username = '{$username}' and password='{$password}'";
                  $select_user_query=mysqli_query($conn,$query);
                  if(!$select_user_query)
                       {
                          die("Connection failed".mysqli_error($conn));
                       }
                while($row=mysqli_fetch_array($select_user_query))
                    {
                       $db_user_id=$row['id'];
                       $_SESSION['username']=$row['username'];
                       $db_user_email=$row['email'];
                       $db_user_password=$row['password'];
                     }
                if($username ===  $_SESSION['username'] && $password ===$db_user_password)
                    {
                       //header("location: titles.php");
                   echo "<script>window.location.href='titles.php'</script>";
                     }

                  else
                 {
                     echo "<p style='color:#FF7B81'> enter correct username and password <p>";
                  }
                }
         ?>
    </div>
  </form>
</div>