30

私はこのコードを持っています、なぜ私のヘッダーの場所が機能しないのですか?それは私のコントロールパネルのいくつかのページを更新、編集、削除する形式です...そして私は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();を追加しました。

4

18 に答える 18

57

これは、出力があるためです。

?>
<?php

空白行が出力されます。

通常のHTMLタグ、ファイル内の空白行、またはPHPのいずれかによって、実際の出力を送信する前に、header()を呼び出す必要があります。

すべてのPHPコードを組み合わせて、ファイルの先頭にスペースがないことを確認してください。

以下のスクリプトがある場合は、header('location: index.php');追加後も。exit();

また、リダイレクトヘッダーを最後の。の後に移動しますif

コンテンツがある場合は、JavaScriptを挿入してリダイレクトすることもできます。

<?php
    echo "<script>window.location.href='target.php';</script>";
    exit;
?>
于 2012-09-21T06:24:06.070 に答える
49

ob_start();コードの先頭、つまりincludeステートメントの前に追加してみてください。

于 2012-09-21T06:40:42.103 に答える
9

スペースを削除

正しい: header("場所: home.php"); またはheader("Location:home.php");

正しくない: header("場所:home.php");

Location と : の間のスペースを削除します--> header("Location( remove space ): home.php");

于 2015-05-11T18:05:39.387 に答える
6

関数 ob_start() は、出力バッファリングをオンにします。出力バッファリングがアクティブな間、スクリプトから出力は送信されません (ヘッダー以外)。代わりに、出力は内部バッファーに格納されます。したがって、ブラウザは出力を受信せず、ヘッダーは機能します。また、コードの先頭で header() が使用されていることを確認する必要があります。

于 2014-02-05T06:41:30.913 に答える
4
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'); 
?>
于 2019-01-23T15:28:31.533 に答える
2

次のコードを使用していますが、問題なく動作します。

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

// my further code 

}
于 2014-01-08T05:26:29.673 に答える
2

ローカルホストと共有サーバーに同じアプリケーションがありました。私のローカルホストではリダイレクトは正常に機能しましたが、この共有サーバーでは正常に機能しませんでした。phpinfo を確認したところ、原因がわかりました。

ここに画像の説明を入力

私のローカルホストにいる間、私はこれを持っていました:

ここに画像の説明を入力

そのため、システム管理者にその値を増やすように依頼したところ、彼がそれを行った後、すべてが正常に機能しました。

于 2017-01-08T16:20:19.053 に答える
1

これを理解するのに少し時間がかかりました:私のphpファイルはUTF-8でエンコードされていました。また、BOM により、ヘッダーの場所が正しく機能しませんでした。Notepad++ で、ファイル エンコーディングを「BOM なしの UTF-8」に設定すると、問題はなくなりました。

于 2016-08-13T17:38:16.727 に答える
1

以下が有効になっているかどうかを確認します

bz、mbstring、intl、ioncube_loader、および Json 拡張。

于 2020-05-29T02:48:14.507 に答える
0

それはすべきではありLocationませんlocation

header('Location: index.php');
于 2012-09-21T06:42:21.403 に答える