У меня этот код, почему мое местоположение заголовка не работает? его форма обновления и редактирования и удаления некоторых страниц в моей панели управления … и у меня есть файл 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 ();
Это потому, что у вас есть выход:
?> <?php
приводит к выводу пустой строки.
header () должен быть вызван до отправки любого фактического вывода либо с помощью обычных тегов HTML, пустых строк в файле, либо из PHP
Объедините все ваши коды PHP и убедитесь, что у вас нет пробелов в начале файла.
также после header('location: index.php');
добавить exit();
если у вас есть другие скрипты ниже.
Также переместите заголовок перенаправления после последнего if
.
Попробуйте добавить ob_start();
в верхней части кода, т.е. перед оператором include
.
Удалить пространство
Правильно: заголовок ("Location: home.php"); или заголовок («Location: home.php»);
Неверно: заголовок ("Location: home.php");
Удалите место между местоположением и: -> header («Местоположение ( удалить место ): home.php»);
просто используйте ob_start();
перед включением функции это поможет
Функция ob_start () включит буферизацию вывода. В то время как буферизация вывода активна, никакой вывод не отправляется из сценария (кроме заголовков), вместо этого вывод сохраняется во внутреннем буфере. Поэтому браузер не получит никакого вывода, и заголовок будет работать. Также мы должны убедиться, что header () используется в верхней части кода.
Я использую следующий код, и он отлично работает для меня.
if(!isset($_SESSION['user'])) { ob_start(); header("Location: https://sitename.com/login.php"); exit(); } else { // my further code }
Мне потребовалось некоторое время, чтобы понять это: мой php-файл был закодирован в UTF-8. И спецификация помешала правильному расположению заголовка. В Notepad ++ я установил кодировку файла в «UTF-8 без спецификации», и проблема исчезла.
Это должно быть Location
не location
:
header('Location: index.php');
У меня было такое же приложение на моем локальном хосте и на общем сервере. На моем локальном хосте reddirects работал нормально, а на этом общем сервере этого не делал. Я проверил phpinfo, и я увидел, что вызвало это:
Хотя на моем локальном хосте у меня было это:
Поэтому я попросил системного администратора увеличить это значение, и после того, как он это сделал, все сработало нормально.
В моем случае я создал новый файл конфигурации с функцией 'ob_start ()' и добавил это в мой файл .gitignore.