空白是PHP/HTML中的问题吗?

空白是PHP/HTML中的问题吗?,php,redirect,error-handling,removing-whitespace,Php,Redirect,Error Handling,Removing Whitespace,我已经为我的站点创建了用户名/密码登录页面。当用户提交他们的信息并与数据库中的信息匹配时,它应该重定向到主页,但不会重定向。根据另一位成员的建议,我在页面中添加了错误报告。当我单击提交时,我没有被重定向到正确的页面,但我被重定向到另一个页面,该页面给出了代码中的所有错误 $SESSION['']变量和我想重定向到页面的标题似乎有问题。我不确定究竟是什么导致了这些问题 注意:未定义索引:第40行/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php中的

我已经为我的站点创建了用户名/密码登录页面。当用户提交他们的信息并与数据库中的信息匹配时,它应该重定向到主页,但不会重定向。根据另一位成员的建议,我在页面中添加了错误报告。当我单击提交时,我没有被重定向到正确的页面,但我被重定向到另一个页面,该页面给出了代码中的所有错误

$SESSION['']变量和我想重定向到页面的标题似乎有问题。我不确定究竟是什么导致了这些问题

注意:未定义索引:第40行/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php中的用户

注意:未定义索引:第41行的pass-in/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php

警告:无法修改标题信息-标题已由第46行/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php中的/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php发送

正如所建议的,在标记之前或之后的空格中可能有错误。我已经查看了我的代码,没有找到这些错误。如有任何关于问题的意见,我们将不胜感激

<?php

session_start();


require_once("../inc_files/Lesson_5_DB_Connection.php");

?>

<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);


    $error_message= "";

    $user_name = "";
    $user_password= "";

    if (isset($_POST['submit'])) {

    $user_name = $_POST['user'];
    $user_password= $_POST['pass'];

        // ADD QUERY TO CHECK IF USER/PASS COMBO IS CORRECT
        if(!empty($user_name) && !empty($user_password)) {

        $query = "SELECT * FROM employees WHERE username='$user_name' and password='$user_password'";


        $result = mysqli_query($dbc, $query)
            or die ('Error querying username/password request');

            if(mysqli_num_rows($result) == 1) {


            while($row = mysqli_fetch_array($result)) {

                $_SESSION['user'] = $row['user'];
                $_SESSION['pass']= $row['pass'];


                }

                 header("Location: /LESSON5/3%20-%20HOMEPAGE%20:%20WELCOME.php");
                exit;


            } // end if rowns

            else {
                $error_message = "You were not able to log in";
            } // end else

        // Direct to other webpage

        } // end query



    } // end isset

?>

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Login</title>
  <link type="text/css" rel="stylesheet" href="/LESSON5/5_Signup_CSS.css">

</head>
<body>
<h1>Welcome to my website!</h1>
<h2>Please login below.</h2>
<h3>Don't have an account? <a href="/LESSON5/2%20-%20CREATE%20AN%20ACCOUNT.php">Create one here.</a></h3>

<div class="formFormat" >  
<div  id="table1">
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  <table id="cssTable">
    <tr>
        <td>Username:</td><td><input type="text" id="user" name="user" value="<?php echo $user_name;?>" /></td>
    </tr>
    <tr>
        <td>Password:</td><td><input type="text" id="pass" name="pass" value="<?php echo $user_password;?>"/></td>
    </tr>
      </table>

  </div>

  <div id="table2">

  <table> 
  <tr>
     <td><input type="submit" name="submit"/></td>
   </tr>
   <tr>
      <td id="createAccount"><a href="/LESSON5/2%20-%20CREATE%20AN%20ACCOUNT.php">Create an account</a></td>
   </tr>
   <tr>
    <td><p><?php echo $error_message?></p></td>
   </tr>

  </table>
  </form>
  </div>
</div> 

<?php
  mysqli_close($dbc);
?>

<?php

if(isset($_SESSION['user']) && isset($_SESSION['pass'])) {

echo "Sessions are set";

}

else { 
  echo "Not set.";
}

?>




</body>
</html>


您打开和关闭了php标记,并在它们之间留下了一条空行——因此您已经有了输出,之后就不能设置标题了

这是您的代码:

<?php

session_start();


require_once("../inc_files/Lesson_5_DB_Connection.php");

?>
                <<<< This empty line is the problem
<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);


前两个通知告诉您正在尝试访问不存在的数组的参数。第二个错误告诉您它无法重定向,因为脚本已经生成了输出(可能是前两个通知的结果)。检查第40行和第41行中的错误,为什么您认为在明确说明错误时存在空格问题。将var_dump($_POST)放在$user_name=$_POST['user']行之前检查post值是否正确。当访问不存在的数组索引时,这并不能解释前两个错误。为True,这只解决了标头问题。标头错误是前两个错误的直接后果,即,因为这些错误会写入浏览器,它们算作输出,并触发头的发送,使得以后不可能再发送任何头。但是,由于PHP脚本不会在前两个错误处停止(它们只是一个突出显示潜在打字错误的通知),因此执行会到达调用
header()
,在那里会触发警告。解决前两个通知也将解决标题警告。@Sven No不会。他在第一个php标记和第二个php标记之间有一个空行,这也将作为一个输出,因此他无法在第二个php标记中发送头。您可以尝试编写一个简单的脚本,在两个php部分之间有一个空行,您将看到无法在该空行之后设置标题。
<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);