标头位置不能在我的PHP代码中工作

mic*_*ael 18 php header

我有这个代码,为什么我的标题位置不起作用?它是一种更新,编辑和删除我的控制面板中的一些页面的形式...我在form.php的同一个文件夹中有一个index.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>
Run Code Online (Sandbox Code Playgroud)

解决: 用@ Mihai Iorga代码我添加了ob_start();

air*_*r4x 36

尝试ob_start();在代码顶部添加,即在include语句之前添加.


Mih*_*rga 30

那是因为你有一个输出:

?>
<?php
Run Code Online (Sandbox Code Playgroud)

导致空行输出.

必须在发送任何实际输出之前调用header(),无论是普通HTML标记,文件中的空行还是PHP

合并所有PHP代码,并确保文件开头没有任何空格.

如果您还有其他任何脚本,请在header('location: index.php');添加之后exit();.

也可以在最后一个之后移动重定向标题if.


小智 8

删除空间

正确:标题("位置:home.php"); 标题("Location:home.php");

不正确:标题("Location:home.php");

删除位置和:- >标题之间的空格("位置(删除空格):home.php");


sub*_* pm 7

只需ob_start();在包含功能之前使用它会有所帮助


Suy*_*ain 5

函数ob_start()将打开输出缓冲.当输出缓冲处于活动状态时,不会从脚本(标头除外)发送输出,而是将输出存储在内部缓冲区中.因此浏览器将不会收到任何输出,并且标题将起作用.我们还应确保在代码顶部使用header().


Sas*_*shi 5

ob_start(); 
Run Code Online (Sandbox Code Playgroud)

应添加到第 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'); 
?>
Run Code Online (Sandbox Code Playgroud)

将其添加到 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'); 
?>
Run Code Online (Sandbox Code Playgroud)