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

时间:2012-09-21 06:22:31

标签: 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>

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

17 个答案:

答案 0 :(得分:35)

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

答案 1 :(得分:25)

那是因为你有一个输出:

?>
<?php

导致空行输出。

必须在发送任何实际输出之前调用

header(),无论是普通HTML标记,文件中的空行还是PHP

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

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

在最后if之后移动重定向标题。

答案 2 :(得分:7)

在include函数之前使用ob_start();它会有帮助

答案 3 :(得分:7)

删除空间

正确:标题(&#34;位置:home.php&#34;); 标题(&#34;位置:home.php&#34;);

不正确:标题(&#34;位置:home.php&#34;);

删除位置与: - &gt; 标题之间的空格(&#34;位置(删除空格):home.php&#34;);

答案 4 :(得分:5)

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

答案 5 :(得分:2)

我使用以下代码,它对我来说很好。

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

// my further code 

}

答案 6 :(得分:1)

花了一些时间才弄明白:我的php文件是用UTF-8编码的。并且BOM阻止了标头位置正常工作。在Notepad ++中,我将文件编码设置为&#34; UTF-8,没有BOM&#34;问题就消失了。

答案 7 :(得分:1)

检查是否启用了以下功能

bz,mbstring,intl,ioncube_loader和Json扩展名。

答案 8 :(得分:0)

就我而言,在 ?>

之后是多余的空格

删除了空格,瞧它起作用了。

答案 9 :(得分:0)

在您的 HTML 代码中,您正在使用表单并将操作设置为“”,我理解它优先于表单中的标题。

我发现在表单中使用 action 元素而不是 header Location 是一种选择。我假设您想要链接上的不同选项,因此是变量。

<?php $nextLink = "index.php"; ?>
<form method="post" action="<?php echo $nextLink; ?>">

我建议将变量放在 $_POST 之外以开始测试。

答案 10 :(得分:0)

对我来说只需添加ob_start();在文件的开头。

答案 11 :(得分:0)

我用这个

header("Location:comments.php");

它解决了..

答案 12 :(得分:0)

创建config.php并放入将起作用的代码

答案 13 :(得分:0)

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'); 
?>

答案 14 :(得分:0)

在我的情况下,我使用函数&#39; ob_start()&#39;创建了新的配置文件。并将其添加到我的.gitignore文件中。

答案 15 :(得分:0)

我在localhost和共享服务器上有相同的应用程序。在我的本地主机上,reddirects工作正常,而在这个共享服务器上没有。我检查了phpinfo,我看到了导致这种情况的原因:

enter image description here

在我的本地主机上,我有这个:

enter image description here

所以我要求系统管理员增加该值,在他这样做之后,一切正常。

答案 16 :(得分:0)

应该是Location而不是location

header('Location: index.php');