2011-06-08 53 views
0

下面是代码:PHP头重定向不起作用

<?php 
     $curDate = date("r",strtotime("now")); 

     if($database->addNewSale($_SESSION['username'],$_SESSION['userid'], $_SESSION['cart'],$curDate) ==10){ 

      //Some of the offers in the cart have expired and cannot be purchased! 
      header("Location: ../order/index.php"); 

      exit; 


      } else if($database->addNewSale($_SESSION['username'],$_SESSION['userid'], $_SESSION['cart'],$curDate)){ 
       echo "insert process ok"; 

      } 

       else echo "sale has not been saved into the db"; 

     ?> 

但是,当函数addNewSale返回10这是在车的错误代码,重定向头功能实际上并不重定向到页面我组。

+2

是否有错误信息? – 2011-06-08 07:29:12

+0

'<?php'标签之前的空格是否是您在此处编写的内容,或者实际上是否在您的页面中?任何错误? (你设置了什么error_reporting级别?) – 2011-06-08 07:31:31

+0

它根本不重定向吗?它会去哪个页面?有没有可能../order/index.php不存在,你又被弹回到404页面? – Paolo 2011-06-08 07:32:03

回答

0

您是否收到任何警告? header()失败通常是由“headers already sent”警告引起的,这可能是由于空白(不能在php开头标签上面有任何内容)或其他任何会发送到html页面的东西造成的。检查以确保您的文本编辑器没有使用字节顺序标记(BOM)保存它 - 这会导致与错误空白一样的问题。您可以尝试开启输出缓冲(ob_start() - 只是一定要ob_end_flush()函数时,即可大功告成)

0

第一次尝试与

if(result=='10')//use single quotes 
    otherwise 
     use full location path 
    $path="index.php"; 
    header("Location:$path"); 
+1

'=='不是类型匹配,所以我不明白为什么在撇号中包含数字会帮助解决这种情况。 – Treffynnon 2011-06-08 08:20:22

1

你有

header("Location: ../order/index.php"); 

但位置标题必须是完整的绝对URL。我不知道这是否是您的问题,但即使碰巧起作用也是不正确的。

请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html第14.30节

+1

另外,在产生任何输出之前,必须调用'header'函数**。 – 2014-05-15 21:29:55