3

我有这个代码

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 文件中的一些设置?希望你能帮助我,谢谢

4

6 回答 6

3

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

于 2013-05-03T12:01:20.907 回答
2

为什么不使用元重定向标记或 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>

于 2013-05-03T12:11:34.020 回答
2

解决方案:更新PHP版本

我的托管也有同样的问题,

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

我通过更新 PHP 版本由托管服务提供商解决了

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

因此,请让您的托管服务提供商更新 PHP 版本。

于 2016-12-26T06:51:18.950 回答
1

放入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');
}
}
于 2013-05-03T11:58:56.160 回答
1

这样做

<?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();

?> `

于 2013-11-17T13:39:04.990 回答
0

这会起作用

<script type="text/javascript">
<!--
   window.location="http://www.newlocation.com";
//-->
</script>
于 2014-01-10T13:43:01.550 回答