【问题标题】:What is wrong with the session in my php script?我的 php 脚本中的会话有什么问题?
【发布时间】:2013-02-10 08:10:12
【问题描述】:

我在这里有这段代码,在脚本的某个地方我有第二部分的代码。当我运行脚本时,它会显示一条通知:

注意:未定义变量:第 215 行 C:\xampp\htdocs\BB\shoppingcart.php 中的 msg
注意:未定义索引:C:\xampp\htdocs\BB\shoppingcart.php 218 行中的购物车

代码如下:

if(isset($_REQUEST['command']) && $_REQUEST['command']=='add' && $_REQUEST['productid']>0)

{
    remove_product($_REQUEST['pid']);
}
else if(isset ($_REQUEST['command'])=='clear'){
    unset($_SESSION['cart']);
}
else if(isset ($_REQUEST['command'])=='update'){
    $max=count($_SESSION['cart']);
    for($i=0;$i<$max;$i++){
        $pid=$_SESSION['cart'][$i]['productid'];
        $q=intval($_REQUEST['product'.$pid]);
        if($q>0 && $q<=999){
            $_SESSION['cart'][$i]['qty']=$q;
        }
        else{
            $msg='Some proudcts not updated!';
        }
    }
}

这是第 215 和 218 行:

<div style="color:#F00"><?php  echo $msg?></div>

if(is_array($_SESSION['cart'])){

我找不到问题,我在网上搜索了几个小时。谢谢

【问题讨论】:

  • cannot pass session variables 的可能重复项
  • 一次:您在$msg 的声明中缺少一个结束'
  • 如果您使用 ?command=clear 运行脚本,则索引已被清除
  • 你错过了这里的报价或者它只是添加了错误? $msg='Some proudcts not updated!;
  • @Sirko 都注意到了同样的事情 ;)

标签: php session


【解决方案1】:

您只在某些条件下设置了 $_SESSION['cart'] 和 $msg,所以如果这些条件不成立,它们就是未定义的。您不能在代码中使用未定义的变量或索引。将第 215 和 218 行更改为以下内容,您不会遇到问题:

<div style="color:#F00"><?php  if (isset($msg)) {echo $msg;} ?></div>

if(isset($_SESSION['cart']) && is_array($_SESSION['cart'])){

【讨论】:

    【解决方案2】:

    首先在代码的第一部分将上面的 $msg 定义为 nul 即 $msg = null 或者您可以使用直接调用 回声 isset($msg) ? $msg : '';

    它将解决您的第一行错误

    然后你一步一步调试你的代码为什么 $msg 不包含任何值 也改变这条线 否则 if(isset ($_REQUEST['command'])=='clear') 至 else if(isset ($_REQUEST['command']) && ($_REQUEST['command'] == 'clear'))

    它是否可以解决您的问题,只需检查一次然后返回,如果没有,我们可以通过其他方式找到它

    【讨论】:

      【解决方案3】:

      摆脱:

      注意:未定义变量:第 215 行 C:\xampp\htdocs\BB\shoppingcart.php 中的 msg

      将此指令放在脚本的开头,以使您的变量始终可用:

      $msg = '';
      

      通知:

      注意:未定义索引:C:\xampp\htdocs\BB\shoppingcart.php 中第 218 行的购物车

      尝试把 session_start();脚本开头的说明。

      【讨论】:

      • 第一个有效,但第二个无效。我已经有 session_start();一开始。
      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      相关资源
      最近更新 更多