Является ли пробел проблемой в этом PHP/HTML?

Я создал страницу логина / пароля для моего сайта. Когда пользователь отправляет свою информацию, и она соответствует информации в базе данных, он должен перенаправить на домашнюю страницу, однако он не перенаправляет. По предложению другого участника я добавил сообщение об ошибке на страницу. Когда я нажимаю кнопку "Отправить", меня не перенаправляют на правильную страницу, но перенаправляют на другую страницу, на которой отображаются все ошибки в моем коде.

Кажется, есть проблемы с переменными $SESSION[''] и заголовком, на который я хочу перенаправить страницу. Я не уверен, что именно может быть причиной этих проблем.

Примечание: неопределенный индекс: пользователь в /home/ikb2014/public_html/test/LESSON5/1 - LOGIN.php в строке 40

Примечание: неопределенный индекс: введите /home/ikb2014/public_html/test/LESSON5/1 - LOGIN.php в строке 41

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/ikb2014/public_html/test/LESSON5/1 - LOGIN.php:10) в / home / ikb2014 / public_html / test / LESSON5 / 1 - LOGIN. PHP на линии 46

Как и предполагалось, в пробелах могут быть ошибки до или после тегов. Я просмотрел свой код и не могу найти эти ошибки. Любой вклад в то, что будет проблем, будет оценено.

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

1 ответ

Вы открыли и закрыли теги 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);

Измените это на это:

<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);

И это должно работать.

Кстати, нет необходимости открывать и закрывать теги php, если между ними ничего не выводится - это бессмысленно.

Другие вопросы по тегам