【问题标题】:php header redirect does not workphp标头重定向不起作用
【发布时间】:2011-06-08 07:25:42
【问题描述】:

代码如下:

    <?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是购物车错误的代码时,redirect header函数实际上并没有重定向到我设置的页面。

【问题讨论】:

  • &lt;?php 标签之前的空格是您在此处写的,还是实际上也在您的页面中?有什么错误吗? (你设置了什么error_reporting级别?)
  • 它会重定向吗?它会进入哪个页面?是否有可能 ../order/index.php 不存在,而您又被退回到 404 页面?
  • @george 这是在上课吗?就像您将功能视为方法一样
  • 好吧,这很奇怪:在我的 MAMP localhost 服务器上,它不会重定向。我在笔记本电脑的 WAMP localhost 上尝试过它,它可以工作!!我不知道发生了什么!
  • 顺便说一句,我没有收到任何警告或错误。

标签: php redirect header


【解决方案1】:

你有

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

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

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

【讨论】:

  • 此外,header 函数必须在产生任何输出之前调用。
【解决方案2】:

您是否收到任何警告? header() 失败最常见的原因是“标头已发送”警告,这可能是由空格(不能在您的 php 开始标记上方有任何空格)或任何其他会发送到 html 页面的内容引起的。检查以确保您的文本编辑器没有使用字节顺序标记 (BOM) 保存它 - 这会导致与错误空格完全相同的问题。您可以尝试打开输出缓冲(ob_start() - 完成后请务必打开 ob_end_flush()。)

【讨论】:

    【解决方案3】:

    先试试

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

    【讨论】:

    • == 不是类型匹配,所以我不明白为什么在这种情况下用撇号括起来会有帮助。
    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    相关资源
    最近更新 更多