【问题标题】:PHP, header(redirect) not working on live serverPHP,标头(重定向)在实时服务器上不起作用
【发布时间】:2013-05-03 11:54:58
【问题描述】:

我有这个代码

if(isset($_GET['elimina_id'])){
    if (in_array($_GET['elimina_id'], $_SESSION['cart']) ) {
        $index = (array_keys($_SESSION['cart'], $_GET['elimina_id']));
        $i = $index[0];
        unset($_SESSION['cart'][$i]);
        header('location: cart.php');
    }
 }

基本上,我想删除购物车中的商品。问题是,在测试页面上,localhost,一切正常,但在实时服务器上,header() 有问题。如果我输入header(),该项目将不会被删除,页面只会重新加载,没有任何操作生效。如果我没有输入header(),在我点击“删除项目”链接后,什么也不会发生,但是如果我手动重新加载它可以工作的页面,该项目就会删除。 在本地主机上我没有这个问题,可能是什么? php版本还可以,会不会是.ini文件中的一些设置? 希望你能帮助我,谢谢

【问题讨论】:

  • ob_start();放在你代码的第一行..

标签: php redirect header localhost


【解决方案1】:

为什么不使用元重定向标签或 javascript 解决方案?

HTML: <meta http-equiv="refresh" content="0;url=http://www.site.com/cart.php">

JavaScript #1: <script>window.location = "http://www.site.com/cart.php";</script>

JavaScript #2: <script>window.navigate("http://www.site.com/cart.php");</script>

【讨论】:

  • 谢谢,这行得通(仅适用于 HTML 方法),唯一的故障是在重定向期间表格调整大小,它变成了宽度/高度的两倍。我仍然不明白的是为什么 header() 不起作用
【解决方案2】:

解决方法:更新 PHP 版本

我的托管也遇到了同样的问题,

  • 标头重定向不起作用
  • 会话问题

托管服务提供商通过更新 PHP 版本解决了这个问题

他只是将 php 版本从 php 5.4 更改为 5.6,它可能已经解决了问题

所以请让您的托管服务提供商更新 PHP 版本。

【讨论】:

    【解决方案3】:

    ob_start() 放在代码的第一行,

    ob_start();
    if(isset($_GET['elimina_id'])){
    if (in_array($_GET['elimina_id'], $_SESSION['cart']) ) {
        $index = (array_keys($_SESSION['cart'], $_GET['elimina_id']));
        $i = $index[0];
        unset($_SESSION['cart'][$i]);
                header('location: cart.php');
    }
    }
    

    【讨论】:

    • 抱歉,ob_start() 确实有效,但现在如果我点击“删除商品”,购物车中的所有商品都会被删除,而不仅仅是我点击的商品
    【解决方案4】:

    这样做

    <?php

    ob_start();

    if(isset($_GET['elimina_id'])){

    if (in_array($_GET['elimina_id'], $_SESSION['cart']) ) {

    $index = (array_keys($_SESSION['cart'], $_GET['elimina_id']));

    $i = $index[0];

    unset($_SESSION['cart'][$i]);

    header('location: cart.php');

    }

    }

    ob_end_flush();

    ?> `

    【讨论】:

      【解决方案5】:

      header('location: cart.php');之前使用ob_start()

      【讨论】:

        【解决方案6】:

        这会起作用

        <script type="text/javascript">
        <!--
           window.location="http://www.newlocation.com";
        //-->
        </script>
        

        【讨论】:

          猜你喜欢
          • 2012-11-20
          • 1970-01-01
          • 1970-01-01
          • 2015-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多