-1

重複の可能性:
PHP の「警告: ヘッダーは既に送信されています」

このスクリプトでヘッダーを設定する前にテキストを出力していないことは 100% 確信していますが、このエラーが発生します。

warning: Cannot modify header information - headers already sent by (output started at /home/x/public_html/index.php:4) in /home/x/public_html/core/functions.php on line 25

Index.phpのトップ

<?php
require_once "core/functions.php";
$actions = new Actions();
$actions->isUserLogged($_SERVER['REMOTE_ADDR'], $_COOKIE['cData']);
?>
<!DOCTYPE html>...

コア/関数.php

<?php

include_once('connection.php');

class Actions {

private $db;

public function __construct() {

    $this->db = new Connection();
    $this->db = $this->db->dbConnect( mysql info );

}

public function isUserLogged($currentIP, $cData) {
    if(!empty($cData)){ //if cookie is not empty
        $getData = $this->db->query("SELECT loggedIP FROM registery WHERE session='".$cData."'")->fetchColumn(); //finding entry in registery.
        $loggedIP = $getData['loggedIP'];
        if($currentIP == $loggedIP) {return true;} //if that loggedIP and currentIP matces -> proceed.
         else { return setcookie('cData','',time()-31536000); //this is where the error points.
          return header("location: login.php");} // else unset cookie and redirect to login.

    } else {    
         return header("location: login.php");
    }


    }   
}
?>

接続.php

<?php
error_reporting(E_ALL);

class Connection {

public function dbConnect($server, $username, $password, $db){

    return new PDO('mysql:host='.$server.';dbname='.$db, $username, $password);

}

}


?> 

誰かが私の間違いを見つけるのに時間を割いてくれるなら、私はそれを高く評価します!

解決策ババは「ini_set("display_errors","On");」を使用することを提案しました。そして、それは魔法のように問題を解決しました...なぜすべてのことを考えているのだろうか! :-)

4

3 に答える 3

1

わかりませんが、空のスペースを扱っていますconnection.php

見る

 <?php
^---------------------------   Most likely the cause  
error_reporting(E_ALL);

また、スイッチがオフになっている場合に備えて、PHP エラーを表示するようにしてください。

error_reporting(E_ALL);
ini_set("display_errors","On");   
于 2012-11-10T19:42:23.503 に答える
0

これは、 UTF-8 バイト オーダー マークである可能性があります。この場合、エンコーディングを「BOM なしの utf-8」に変更します。

編集: ここにスペースはどうですか(connection.php、最後の行):

    ?> 
    --^------- there
于 2012-11-10T20:06:43.520 に答える
0

それは時々かなりの問題です。私はそれを数回経験し、代わりにjavascriptを使用することにしました。例:

echo '<script type="text/javascript">window.location ="login.php";</script>';

あなたが探している解決策ではありませんが、これもうまくいくかもしれません。

お役に立てれば。

于 2012-11-10T20:11:16.567 に答える