2011-07-25 157 views
0

我正在使用MAMP,NetBeans在我的Mac上开发php网站。我写了下面的代码,但反复出错。我尝试了所有注释行,但都没有工作。Header not working PHP

<?php 
if ($output == 1) //Authenticated = yes 
{ 

    $url = "http://www.google.com”; 
    //error_reporting(E_ALL); ini_set('display_errors', 'On'); 
    // 
    // include('./dlheader.inc'); 

    //header("Content - Length: 0"); 
    // header("Location: http://google.com", true, 303); 
    // header("Location:".$url); 
    // header("Location: http://google.com", true); 
    // exit; 

    /*   flush(); 
      if (headers_sent()) { 
die('cannot send location header (anymore)'); 
} 
    else { 
    header('Location: '.$url); 
    die(); 
} 

*/ 
    //echo '<html><head><meta http-equiv="refresh" content="1;url=' . $url . '"/>; 

} 
?> 

此代码恰好在<body>标记后面。感谢您的帮助提前。

+3

什么是你的错误:

您可以用函数headers_sent()布尔结果检查呢? – Jim

+1

而你的错误是? –

+1

这是个问题很少的问题。为了确保良好的反应,您应该包括预期结果('我想加载google.com')和实际结果('我得到以下错误消息:等等等等等等) – Erik

回答

11

如果这正是你的代码,你需要修复这个引用。它看起来像是从网站或文字处理器复制/粘贴的。

$url = "http://www.google.com”; 
          ^^^^ 

应该

$url = "http://www.google.com"; 

因为它不是一个正确的双引号,PHP不会看到字符串为被关闭,所有后续的代码被视为字符串的一部分,直到另一个"是遇到。

5

如果php标签之前的空格在文件中,那么header()将不起作用。在header()之前,php文件中不会出现任何空白区域或任何输出,或者它不会工作,因为头文件已经被发送。

if(headers_sent()) 
{ 
    echo "headers already sent!"; 
} 
+0

除非输出缓冲打开。但它通常不是默认的。该问题指出该代码位于body标签之后。所以在上面的答案中提到的输出将是开头的html,头标和开头体标签。 – Josh