Заголовок не работает в моем 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(); в верхней части кода, т.е. перед оператором включения