-3

重複の可能性:
PHP によって既に送信されたヘッダー

私のウェブサイトは、ホストゲーター サーバーに移行するまで問題なく動作していましたが、切り替えた後、すべてのページでエラーが見つかりました。

Cannot modify header information - headers already sent by (output started at /home/flip/public_html/index.php)

コードを開いて、前にhtmlを配置しない場所をいくつか読みました<?php ?>

私のコードはこのように始まりました

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?php 
@session_start();
include_once("includes/connection.php");
$id=$_SESSION['user_id'];
    if(!isset($_SESSION['user_id']))
    {
      header("location:index.php");
    }
        if (!isset($_GET["event"])) {
            $caseVar = "share";
        } else {
            $caseVar = $_GET["event"];
        }
?>

以前のサーバーでは問題なく動作していましたが、新しいサーバーに切り替えると、すべてのページでヘッダーエラーが発生し始めました。しかし、後で私はdoctype後に置き、<?php ?>以前と同じように機能し始めました。私は本当にこれが起こった理由を知りたかった.cant htmlは前に書かれ<?php ?> ていて、サーバーからサーバーに切り替えるたびにコードを変更する必要がありますか?

4

3 に答える 3

2

header()出力開始後に関数を呼び出すことはできません。を呼び出す前に出力が開始されないようにする場合はheader()、出力バッファーob_start()を使用してob_end_flush()から出力を出力し、バッファーをクリアします。

参考までに、関数session_start()の一種ですheader()

于 2012-08-16T18:43:47.990 に答える
1

php ページの上部で session_start() が呼び出される前に、html を持つことはできません。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">終了phpタグの後に配置します?>

于 2012-08-16T18:42:58.213 に答える
1

エラーを検索する必要があります。これは非常に一般的な問題です。

問題は、ヘッダーを 1 回しか送信できないことです。何かを出力する場合は、ヘッダーが必要です。

だからあなたのライン

header("location:index.php");

最初に何かを出力した場合(空白など、またはあなたの場合はこの完全な行:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

セッションについても同様です。ヘッダーを送信する必要があります。

于 2012-08-16T18:43:07.553 に答える