Имееться файл form.php следующего содержания:
<meta charset="utf-8">
<?php
if (!empty($_POST)) {
$id = $_POST['id'];
$name = $_POST['name'];
$link = mysqli_connect('localhost', 'root', 'root', 'mydb');
mysqli_query($link, "SET NAMES 'utf8'");
$query = "INSERT INTO users SET id='$id', name='$name'";
$result = mysqli_query($link, $query) or
die(mysqli_error($link));
unset($_POST);
header('Location: form.php');
}
?>
<form method="POST">
<input name="id">
<input name="name">
<input type="submit">
</form>
При нажатии кнопки отправки данные введеные в форму улетают в базу данных. Header призванный для исключения дубляжа, вместо возложенных на него обязанностей выводит ошибку следующего вида Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\newProject\form.php:1) in C:\OpenServer\domains\newProject\form.php on line 15 на страницу. По итогу имеем переполнение базы дубликатами и захламлённую страницу с формой. Каждое обновление страницы порождает запись той же информации, хотя поля формы пусты - это раз и удалён массив ПОСТ - это два. Это как так понимать? Откуда в таком разе беруться данные и как вообще выполняется запрос находящийся в if'е если после удаления массива способом unset($_POST) условие !empty($_POST) становиться ложным(во всяком случае должно становиться). Действительно ли описаное выше условие станет ложным если Header чудесным образом заработает, что для этого нужно? Что я только не пробовал за эти несколько дней: И записывал некую переменную логическую переменную в куки, a затем до if'а пытался удалить пост. И менял empty() на isset(). И насильно менял значения POST[id] и POST[name] на пустату. И даже сделал отдельный файлик куда также, как в случае с куками, записывал логическое значение, после чего мне даже удалось победить злопоучное дублирование данных в базу без применения headera, но увы лишь частично. Перед тем как открыть шампанское, я повторно обновил страницу и данные которые минуту назад были удалены (как мне казалось) снова откуда невозьмись записались в базу. Данные попрежнему записывались в базу данных с тем лишь отличием от предыдущих способов, что делали это раз в 2 обновления. Вобщем я исчерпал все свои идеи и надеюсь на внятный ответ бывалых знатоков.
header(в документации например) и что до него не должно быть никакого вывода в output...... а у вас уже<meta charset="utf-8">– Алексей Шиманский Jan 29 '22 at 13:47