Заголовок не работает в моем php-коде

У меня этот код, почему мое местоположение заголовка не работает? его форма обновления и редактирования и удаления некоторых страниц в моей панели управления... и у меня есть файл index.php в той же папке form.php... любая помощь, пожалуйста?() Я попытался поместить заголовок после редактирование и удаление... и по-прежнему перейти на страницу формы, а не индекс...

<?php
include "../../includes/site_includes.php";
//send
if ((isset($_POST["send"])) && ($_POST["send"] == 1)) {
    $pageid = $_POST["page_id"];
    $pagetitle = $_POST["page_title"];
    $nameinmenu = $_POST["page_menu_name"];
    $nameinurl = $_POST["page_name_url"];
    $link = $_POST["page_link"];
    $picture = $_POST["page_pic"];
    $desc = $_POST["page_desc"];
    $content = $_POST["page_content"];
}
if ((isset($_POST["act"])) && ($_POST["act"] == "add")) {
    $sql = insertpage();
    if ($result = $mysqli->prepare($sql)) {
        $result->bind_param("sssssss", $pagetitle, $nameinmenu, $nameinurl, $link, $picture, $desc, $content);
        $result->execute();
        $result->store_result();
        $rows = $result->num_rows;
    }
}
////edit
if ((isset($_GET["act"])) && ($_GET["act"] == "edit")) {
    $sql = getfrompages();
    if ($result = $mysqli->prepare($sql)) {
        $rekza = $_GET["id"];
        $result->bind_param("i", $rekza);
        $result->execute();
        $result->store_result();
        $rowsZ = $result->num_rows;
    }
    if ($rowsZ > 0) {
        $row = fetch($result);
        $pageid = $row[0]["page_id"];
        $pagetitle = $row[0]["page_title"];
        $nameinmenu = $row[0]["page_menu_name"];
        $nameinurl = $row[0]["page_name_url"];
        $link = $row[0]["page_link"];
        $picture = $row[0]["page_pic"];
        $desc = $row[0]["page_desc"];
        $content = $row[0]["page_content"];
    }
}
if ((isset($_GET["act"])) && ($_GET["act"] == "delete")) {
    $thedelid = $_GET["id"];
    $sql2 = delpage();
    if ($result2 = $mysqli->prepare($sql2)) {
        $result2->bind_param("i", $thedelid);
        $result2->execute();
        $result2->store_result();
        $rowsZ2 = $result2->num_rows;
    }
}
header('location: index.php');
exit();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> pages add </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>

 <body>
<form method="post" action="">
        <table>
            <tr>
                <td style="font-weight:bold;">title</td>
                <td><input type="text" name="page_title" value="<?=$pagetitle?>" /></td>
            </tr>
            <tr>
                <td style="font-weight:bold;">name in menu</td>
                <td><input type="text" name="page_menu_name" value="<?=$nameinmenu?>" /></td>
            </tr>
            <tr>
                <td style="font-weight:bold;">name in url</td>
                <td><input type="text" name="page_name_url" value="<?=$nameinurl?>" /></td>
            </tr>
            <tr>
                <td style="font-weight:bold;">link</td>
                <td><input type="text" name="page_link" value="<?=$link?>" /></td>
            </tr>
            <tr>
                <td style="font-weight:bold;">picture</td>
                <td><input type="text" name="page_pic" value="<?=$picture?>" /></td>
            </tr>
            <tr>
                <td style="font-weight:bold;">description</td>
                <td><textarea name="page_desc"><?=$desc?></textarea></td>
            </tr>
            <tr>
                <td style="font-weight:bold;">content</td>
                <td><textarea name="page_content"><?=$content?></textarea></td>
            </tr>
            <tr>
                <td colspan="2">
                <input type="hidden" name="send" value="1" />
                <input type="hidden" name="act" value="<?=$_GET["act"]?>" />
                <input type="hidden" name="page_id" value="<?=$pageid?>" />
                <input type="submit" value="add" /></td>
            </tr>
        </table>
</form>
 </body>
</html>

решена: с кодом @Mihai Iorga я добавил ob_start();

Ответ 1

Это потому, что у вас есть вывод:

?>
<?php

приводит к выводу пустой строки.

header() должна вызываться перед отправкой любого фактического вывода, либо обычными тегами HTML, пустыми строками в файле, либо из PHP

Объедините все свои PHP-коды и убедитесь, что в начале файла нет пробелов.

также после header('location: index.php'); добавьте exit();, если у вас есть другие скрипты ниже.

Также переместите заголовок перенаправления после последнего if.

Если есть контент, то вы также можете перенаправить, вставив JavaScript:

<?php
    echo "<script>window.location.href='target.php';</script>";
    exit;
?>

Ответ 2

Попробуйте добавить ob_start(); вверху кода, то есть перед оператором include.

Ответ 3

Удалить пространство

Правильно: заголовок ( "Location: home.php" ); или заголовок ( "Местоположение: home.php" );

Неверно: заголовок ( "Location: home.php" );

Удалите место между местоположением и: заголовок ( "Местоположение (удалить пространство): home.php" );

Ответ 4

просто используйте ob_start(); перед включением функции, это поможет

Ответ 5

Функция ob_start() включит буферизацию вывода. В то время как буферизация вывода активна, выходной сигнал не выводится из script (кроме заголовков), вместо этого вывод сохраняется во внутреннем буфере. Таким образом, браузер не получит никакого вывода, и заголовок будет работать. Также мы должны убедиться, что header() используется в верхней части кода.

Ответ 6

Я использую следующий код, и он отлично работает для меня.

if(!isset($_SESSION['user'])) {
       ob_start();
       header("Location: https://sitename.com/login.php");
       exit();
} else { 

// my further code 

}

Ответ 7

Мне потребовалось некоторое время, чтобы понять это: мой php файл был закодирован в UTF-8. И спецификация помешала правильному расположению заголовка. В Notepad ++ я установил кодировку файла в "UTF-8 без спецификации", и проблема исчезла.

Ответ 8

ob_start(); 

должны быть добавлены в самой строке 1. как в примере ниже

<?php
ob_start(); // needs to be added here
?>
<!DOCTYPE html>
<html lang="en">
// your code goes here
</html>
<?php
if(isset($_POST['submit']))
{ 
//code to save data in db goes here
}
header('location:index.php?msg=sav'); 
?>

добавление его ниже HTML также не работает. как ниже

<!DOCTYPE html>
<html lang="en">
// your code goes here
</html>
<?php
ob_start(); // it doesnt work even if you add here
if(isset($_POST['submit']))
{ 
//code to save data in db goes here
}
header('location:index.php?msg=sav'); 
?>

Ответ 9

Это должно быть Location not Location:

header('Location: index.php');

Ответ 10

У меня было такое же приложение на моем локальном хосте и на общем сервере. На моем локальном хосте перенаправления работали нормально, в то время как на этом общем сервере это не так. Я проверил phpinfo и увидел, что вызвало это:

enter image description here

В то время как на моем локальном хосте у меня было это:

enter image description here

Поэтому я попросил системного администратора увеличить это значение, и после того, как он это сделал, все работало нормально.

Ответ 11

В моем случае я создал новый файл конфигурации с функцией 'ob_start()' и добавил это в мой файл .gitignore.

Ответ 12

Создайте config.php и поставьте код, он будет работать

Ответ 13

Попробуйте ob_start(); в верхней части кода, т.е. перед оператором включения