Включение файлов PHP - отдельные файлы работают нормально, при включении файлов возникает ошибка

Новичок здесь со странной ошибкой. Прежде чем начать - я прочитал и понял (по крайней мере, мне так кажется) эту тему: Как исправить ошибку "Заголовки уже отправлены" в PHP в котором есть отличный обзор этой ошибки, но я не нашел там решения. Теперь проблема: У меня есть 2 простых файла .php (05.php и 10.php) ... оба они содержат 5 строк таблицы. Первые 3 столбца не актуальны (простой текст). Четвертый столбец читает содержимое файла .txt и отображает его. Пятый столбец имеет 2 кнопки отправки («+» и «-»), которые в основном открывают файл .txt, читают номер в нем, меняют его значение, заменяют значение в файле на измененное и обновляют сайт. Мне нужно включить оба этих файла в мой файл «main.php».

Когда я открываю их по отдельности, они работают нормально, когда я включаю любой из них в "main.php", все работает нормально, но когда я включаю их оба, кнопки ввода в первых 7 строках работают нормально, но кнопки в строках 8- 10 дайте мне эту ошибку:

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\10.php:94) in C:\xampp\htdocs\test\10.php on line 120

Номер второй строки меняется, когда я нажимаю разные кнопки ввода (что очевидно). Номер первой строки всегда один и тот же и указывает на строку с этим кодом:

</form>

Я не могу понять, что случилось ... Я знаю, что этот код не "хороший" и не лучший способ делать такие вещи, но, как я уже сказал ... новичок на палубе :) Вот полные коды "05.php", "10.php" и "main.php" ...

"05.php"

    <tr>
      <td align = "right" valign = "middle">Papier półpołysk klej standard</td>
      <td align = "right" valign = "middle">DIG UV INKJET MC80 FSC S2000N-BG40BR</td>
      <td align = "right" valign = "middle">0,166</td>
<td align = "right" valign = "middle">
<?php $fp01 = fopen("licznik01.txt", "r+");
$count01 = fgets($fp01);
fclose($fp01);
echo $count01;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus01" id = "minus01" value = "-" type = "submit">
<?php function odejmij01()
{
$fp01 = fopen("licznik01.txt", "r+");
$count01 = fgets($fp01);
$count01 = $count01 - 1;
ftruncate($fp01, 0);
fseek($fp01, 0);
fputs($fp01, $count01);
fclose($fp01);
header("Refresh:0");
}
if (array_key_exists('minus01',$_POST)){
odejmij01();
}
?>
<input class = "zielony" name = "plus01" id = "plus01" value = "+" type = "submit">
<?php function dodaj01()
{
$fp01 = fopen("licznik01.txt", "r+");
$count01 = fgets($fp01);
$count01 = $count01 + 1;
ftruncate($fp01, 0);
fseek($fp01, 0);
fputs($fp01, $count01);
fclose($fp01);
header("Refresh:0");
}
if (array_key_exists('plus01',$_POST)){
dodaj01();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle">0,200</td>
<td align = "right" valign = "middle">
<?php $fp02 = fopen("licznik02.txt", "r+");
$count02 = fgets($fp02);
fclose($fp02);
echo $count02;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus02" id = "minus02" value = "-" type = "submit">
<?php function odejmij02()
{
$fp02 = fopen("licznik02.txt", "r+");
$count02 = fgets($fp02);
$count02 = $count02 - 1;
ftruncate($fp02, 0);
fseek($fp02, 0);
fputs($fp02, $count02);
fclose($fp02);
header("Refresh:0");
}
if (array_key_exists('minus02',$_POST)){
odejmij02();
}
?>
<input class = "zielony" name = "plus02" id = "plus02" value = "+" type = "submit">
<?php function dodaj02()
{
$fp02 = fopen("licznik02.txt", "r+");
$count02 = fgets($fp02);
$count02 = $count02 + 1;
ftruncate($fp02, 0);
fseek($fp02, 0);
fputs($fp02, $count02);
fclose($fp02);
header("Refresh:0");
}
if (array_key_exists('plus02',$_POST)){
dodaj02();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle">0,250</td>
<td align = "right" valign = "middle">
<?php $fp03 = fopen("licznik03.txt", "r+");
$count03 = fgets($fp03);
fclose($fp03);
echo $count03;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus03" id = "minus03" value = "-" type = "submit">
<?php function odejmij03()
{
$fp03 = fopen("licznik03.txt", "r+");
$count03 = fgets($fp03);
$count03 = $count03 - 1;
ftruncate($fp03, 0);
fseek($fp03, 0);
fputs($fp03, $count03);
fclose($fp03);
header("Refresh:0");
}
if (array_key_exists('minus03',$_POST)){
odejmij03();
}
?>
<input class = "zielony" name = "plus03" id = "plus03" value = "+" type = "submit">
<?php function dodaj03()
{
$fp03 = fopen("licznik03.txt", "r+");
$count03 = fgets($fp03);
$count03 = $count03 + 1;
ftruncate($fp03, 0);
fseek($fp03, 0);
fputs($fp03, $count03);
fclose($fp03);
header("Refresh:0");
}
if (array_key_exists('plus03',$_POST)){
dodaj03();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle">0,333</td>
<td align = "right" valign = "middle">
<?php $fp04 = fopen("licznik04.txt", "r+");
$count04 = fgets($fp04);
fclose($fp04);
echo $count04;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus04" id = "minus04" value = "-" type = "submit">
<?php function odejmij04()
{
$fp04 = fopen("licznik04.txt", "r+");
$count04 = fgets($fp04);
$count04 = $count04 - 1;
ftruncate($fp04, 0);
fseek($fp04, 0);
fputs($fp04, $count04);
fclose($fp04);
header("Refresh:0");
}
if (array_key_exists('minus04',$_POST)){
odejmij04();
}
?>
<input class = "zielony" name = "plus04" id = "plus04" value = "+" type = "submit">
<?php function dodaj04()
{
$fp04 = fopen("licznik04.txt", "r+");
$count04 = fgets($fp04);
$count04 = $count04 + 1;
ftruncate($fp04, 0);
fseek($fp04, 0);
fputs($fp04, $count04);
fclose($fp04);
header("Refresh:0");
}
if (array_key_exists('plus04',$_POST)){
dodaj04();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle">Papier półpołysk klej mocny</td>
      <td align = "right" valign = "middle">DIG UV INKJET MC80 FSC S2045N-BG40BR </td>
      <td align = "right" valign = "middle">0,166</td>
<td align = "right" valign = "middle">
<?php $fp05 = fopen("licznik05.txt", "r+");
$count05 = fgets($fp05);
fclose($fp05);
echo $count05;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus05" id = "minus05" value = "-" type = "submit">
<?php function odejmij05()
{
$fp05 = fopen("licznik05.txt", "r+");
$count05 = fgets($fp05);
$count05 = $count05 - 1;
ftruncate($fp05, 0);
fseek($fp05, 0);
fputs($fp05, $count05);
fclose($fp05);
header("Refresh:0");
}
if (array_key_exists('minus05',$_POST)){
odejmij05();
}
?>
<input class = "zielony" name = "plus05" id = "plus05" value = "+" type = "submit">
<?php function dodaj05()
{
$fp05 = fopen("licznik05.txt", "r+");
$count05 = fgets($fp05);
$count05 = $count05 + 1;
ftruncate($fp05, 0);
fseek($fp05, 0);
fputs($fp05, $count05);
fclose($fp05);
header("Refresh:0");
}
if (array_key_exists('plus05',$_POST)){
dodaj05();
}
?>
</form>
</td>
    </tr>

«10.php»

    <tr>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle">0,250</td>
<td align = "right" valign = "middle">
<?php $fp06 = fopen("licznik06.txt", "r+");
$count06 = fgets($fp06);
fclose($fp06);
echo $count06;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus06" id = "minus06" value = "-" type = "submit">
<?php function odejmij06()
{
$fp06 = fopen("licznik06.txt", "r+");
$count06 = fgets($fp06);
$count06 = $count06 - 1;
ftruncate($fp06, 0);
fseek($fp06, 0);
fputs($fp06, $count06);
fclose($fp06);
header("Refresh:0");
}
if (array_key_exists('minus06',$_POST)){
odejmij06();
}
?>
<input class = "zielony" name = "plus06" id = "plus06" value = "+" type = "submit">
<?php function dodaj06()
{
$fp06 = fopen("licznik06.txt", "r+");
$count06 = fgets($fp06);
$count06 = $count06 + 1;
ftruncate($fp06, 0);
fseek($fp06, 0);
fputs($fp06, $count06);
fclose($fp06);
header("Refresh:0");
}
if (array_key_exists('plus06',$_POST)){
dodaj06();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle">0,250</td>
<td align = "right" valign = "middle">
<?php $fp07 = fopen("licznik07.txt", "r+");
$count07 = fgets($fp07);
fclose($fp07);
echo $count07;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus07" id = "minus07" value = "-" type = "submit">
<?php function odejmij07()
{
$fp07 = fopen("licznik07.txt", "r+");
$count07 = fgets($fp07);
$count07 = $count07 - 1;
ftruncate($fp07, 0);
fseek($fp07, 0);
fputs($fp07, $count07);
fclose($fp07);
header("Refresh:0");
}
if (array_key_exists('minus07',$_POST)){
odejmij07();
}
?>
<input class = "zielony" name = "plus07" id = "plus07" value = "+" type = "submit">
<?php function dodaj07()
{
$fp07 = fopen("licznik07.txt", "r+");
$count07 = fgets($fp07);
$count07 = $count07 + 1;
ftruncate($fp07, 0);
fseek($fp07, 0);
fputs($fp07, $count07);
fclose($fp07);
header("Refresh:0");
}
if (array_key_exists('plus07',$_POST)){
dodaj07();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle">Papier półpołysk klej odlepny</td>
      <td align = "right" valign = "middle">DIG INDI MC80 TOP FSC R5000N-BG40BR </td>
      <td align = "right" valign = "middle">0,166</td>
<td align = "right" valign = "middle">
<?php $fp08 = fopen("licznik08.txt", "r+");
$count08 = fgets($fp08);
fclose($fp08);
echo $count08;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus08" id = "minus08" value = "-" type = "submit">
<?php function odejmij08()
{
$fp08 = fopen("licznik08.txt", "r+");
$count08 = fgets($fp08);
$count08 = $count08 - 1;
ftruncate($fp08, 0);
fseek($fp08, 0);
fputs($fp08, $count08);
fclose($fp08);
header("Refresh:0");
}
if (array_key_exists('minus08',$_POST)){
odejmij08();
}
?>
<input class = "zielony" name = "plus08" id = "plus08" value = "+" type = "submit">
<?php function dodaj08()
{
$fp08 = fopen("licznik08.txt", "r+");
$count08 = fgets($fp08);
$count08 = $count08 + 1;
ftruncate($fp08, 0);
fseek($fp08, 0);
fputs($fp08, $count08);
fclose($fp08);
header("Refresh:0");
}
if (array_key_exists('plus08',$_POST)){
dodaj08();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle">0,250</td>
<td align = "right" valign = "middle">
<?php $fp09 = fopen("licznik09.txt", "r+");
$count09 = fgets($fp09);
fclose($fp09);
echo $count09;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus09" id = "minus09" value = "-" type = "submit">
<?php function odejmij09()
{
$fp09 = fopen("licznik09.txt", "r+");
$count09 = fgets($fp09);
$count09 = $count09 - 1;
ftruncate($fp09, 0);
fseek($fp09, 0);
fputs($fp09, $count09);
fclose($fp09);
header("Refresh:0");
}
if (array_key_exists('minus09',$_POST)){
odejmij09();
}
?>
<input class = "zielony" name = "plus09" id = "plus09" value = "+" type = "submit">
<?php function dodaj09()
{
$fp09 = fopen("licznik09.txt", "r+");
$count09 = fgets($fp09);
$count09 = $count09 + 1;
ftruncate($fp09, 0);
fseek($fp09, 0);
fputs($fp09, $count09);
fclose($fp09);
header("Refresh:0");
}
if (array_key_exists('plus09',$_POST)){
dodaj09();
}
?>
</form>
</td>
    </tr>
    <tr>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle"></td>
      <td align = "right" valign = "middle">0,333</td>
<td align = "right" valign = "middle">
<?php $fp10 = fopen("licznik10.txt", "r+");
$count10 = fgets($fp10);
fclose($fp10);
echo $count10;
?>
</td>
<td align = "center" valign = "middle">
<form method = "post">
<input class = "czerwony" name = "minus10" id = "minus10" value = "-" type = "submit">
<?php function odejmij10()
{
$fp10 = fopen("licznik10.txt", "r+");
$count10 = fgets($fp10);
$count10 = $count10 - 1;
ftruncate($fp10, 0);
fseek($fp10, 0);
fputs($fp10, $count10);
fclose($fp10);
header("Refresh:0");
}
if (array_key_exists('minus10',$_POST)){
odejmij10();
}
?>
<input class = "zielony" name = "plus10" id = "plus10" value = "+" type = "submit">
<?php function dodaj10()
{
$fp10 = fopen("licznik10.txt", "r+");
$count10 = fgets($fp10);
$count10 = $count10 + 1;
ftruncate($fp10, 0);
fseek($fp10, 0);
fputs($fp10, $count10);
fclose($fp10);
header("Refresh:0");
}
if (array_key_exists('plus10',$_POST)){
dodaj10();
}
?>
</form>
</td>
    </tr>

"main.php"

<!DOCTYPE html">
<html><head>
<meta content = "text/html; charset=ISO-8859-1" http-equiv = "content-type">
<link rel = "stylesheet" href = "style.css">
<title>Etykiety - Stan magazynowy</title>
</head>
<body>
<div style = "text-align: center;">
<h1>Etykiety - Stan magazynowy</h1>

<form method = "post">
<h2><input class = "odswiez" name = "odswiez" id = "odswiez" value = "ODŚWIEŻ DANE" type = "submit"></h2>
<?php function odswiez()
{
header("Refresh:0");
}
if (array_key_exists('odswiez',$_POST)){
odswiez();
}
?>
</form>

<table align=center style = "text-align: left; width: 750px;" cellpadding = "2" cellspacing = "2">
  <tbody>
    <tr>
      <th align = "right" valign = "middle" height = "35px">Nazwa Materiału</th>
      <th align = "right" valign = "middle">Kod producenta</th>
      <th align = "right" valign = "middle">Szerokość</th>
      <th align = "right" valign = "middle">Stan</th>
      <th align = "center" valign = "middle">Akcje</th>
    </tr>
<?php include '05.php';?>
<?php include '10.php';?>
  </tbody>
</table>

<form method = "post">
<h2><input class = "odswiez" name = "odswiez2" id = "odswiez2" value = "ODŚWIEŻ DANE" type = "submit"></h2>
<?php function odswiez2()
{
header("Refresh:0");
}
if (array_key_exists('odswiez2',$_POST)){
odswiez2();
}
?>
</form>

</div>
</body></html>

Любая помощь - отличная помощь :)

Обновлено: Вместо того, чтобы включать эти файлы, я просто скопировал / вставил их код в main.php, и он точно такой же. По отдельности работает нормально, склеенные вместе дают ту же ошибку ...

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короче
Не должно быть отправлено ничего, даже пробела, пока не будут отправлены все заголовки.

Проблема
В вашем случае сценарий отправляет много html-кода, текста и т.д., а затем внезапно пытается изменить заголовки с помощью таких вызовов, как header("Refresh:0");, и это неправильно.

Вы должны отправить все заголовки до того, как содержимое страницы будет отправлено в браузер.

Решение:
1. отправил все заголовки в начале скрипта, а затем продолжил content
OR
2. используйте Буферизация вывода, чтобы перехватить весь вывод и сбросить его после завершения всех изменений заголовков.

НО не смешивайте вывод и заголовки вместе.

Доказательство концепции
Вы можете прокомментировать все строки с помощью header("Refresh:0");. Это должно подавить ошибки PHP headers already sent;)

Спасибо за ответ! У меня все это есть, и я могу использовать любой другой способ обновления страницы вместо «заголовка», но мне любопытно, почему этот код работает для 7 строк таблицы и не более (все строки просто копируются / вставить с измененными числами (01 -> 02 -> 03 ... и так далее) ... Если бы мой код для строки таблицы был неправильным, он вылетел бы в первой и любой другой строке, но вместо этого он отлично работает для 7 строк: )

baur 22.03.2018 13:15

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

ino 22.03.2018 13:26

И как всегда ошибался. Xdebug показывает эту ошибку даже в первой строке таблицы. Так что ошибка была все время, но без Xdebug она (по какой-то причине) не отображалась до 8 строки ... Спасибо за ответ!

baur 22.03.2018 14:31

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