Ошибки session_start, потому что заголовки уже отправлены тем же действием session_start?

Я пытаюсь начать сеанс в PHP для хранения данных об идентификаторе пользователя (который будет использоваться в БД mySQL).

Однако, когда я начинаю сеанс, я получаю следующие ошибки:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /Applications/MAMP/blah) in /Applications/MAMP/blah on line 38

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /Applications/MAMP/blah) in /Applications/MAMP/blah on line 38

Я понимаю, что ошибка говорит о том, что он не может начать сеанс, поскольку страница уже отправлена, или "заголовок уже отправлен", однако я очень запутался, потому что строка, на которую она ссылается, строка 38, является строкой, которая запускает сеанс:

Line 38: session_start();

Так как же это сказать, что заголовки уже отправлены этой строкой, и это ошибка?

Вот сокращенный раздел моего кода. Отметим, что есть часть HTML, которая загружается через AJAX с использованием jQuery, не так ли?

<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>
        <div class="wrapper">
          <div id="quiz-section">
             // This part is where the HTML content loads via AJAX
          </div>
        </div>
<!-- Below PHP looks at the referral i.e how the user landed on this page -->
<?php
session_start();
require 'connect.php';
if (!mysqli_query($con,"INSERT INTO entries (referral) VALUES ('$ref')")){
        echo("Error description: " . mysqli_error($con));
        return false;
}

$_SESSION["sessionID"] = mysqli_insert_id($con);
mysqli_close($con);

?>
</body>

<script>
// some jQuery here to load in the HTML content to the AJAX pane   
</script>
</html>

1 ответ

Вы выводите HTML до session_start(), Поместите ваш код PHP над кодом HTML.

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