我的PHP脚本中的会话有什么问题?

时间:2013-02-10 08:10:13

标签: php session

我在这里有这个代码,在脚本的某处我有代码的第二部分。当我运行脚本时,它向我显示了这个通知:

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

以下是代码:

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'])){

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

3 个答案:

答案 0 :(得分:1)

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

它将解决您的第一行错误

然后逐步调试代码,为什么$ msg不包含任何值 改变这一行     else if(isset($ _REQUEST ['command'])=='clear') 至     否则if(isset($ _REQUEST ['command'])&amp;&amp;($ _REQUEST ['command'] =='clear'))

它可以解决你的问题只需检查一次然后再回来,如果没有那么我们可以用另一种方式找到它

答案 1 :(得分: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 :(得分:0)

摆脱:

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

将此说明放在脚本的开头,以使变量始终可用:

$msg = '';

通知:

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

尝试使用session_start();脚本开头的指令。