首页上一页 1 下一页尾页 4 条记录 1/1页
php程序设计,第14章,购物车中,session的$producelist,$quatity是何时分配的?
发表在PHP图书答疑
2016-08-23
是否精华
是
否
版块置顶:
是
否
1.
在注册的时候,savereg.php中最后有如下代码,下面的$username,$producelist,$quatity在这里出现有何意义?
这里应该不是$_SESSION['producelist']...吧?
mysqli_query($conn,"insert into tb_user (name,pwd,dongjie,email,truename,sfzh,tel,qq,tishi,huida,dizhi,youbian,regtime,pwd1) values ('$name','$pwd','$dongjie','$email','$truename','$sfzh','$tel','$qq','$tishi','$huida','$dizhi','$youbian','$regtime','$pwd1')");
$username=$name;
$producelist="";
$quatity="";
echo "<script>alert('恭喜,注册成功!');window.location='index.php';</script>";
2.
在直接登录-->chkuser.php,验证后,直接session存储用户名。这个时候应该只是传递了name。
session_start();
$_SESSION['username']=$info['name'];
header("location:index.php");
exit;
3.在点击index.php点击购物时,跳转-->addgouwuche.php
下面的代码,这是第一次出现$_SESSION['producelist'],应该是空值吧,那$array这个数组也应该是空。count($array)为0,!in_array($id,$array)为真,执行下面语句。$_SESSION['producelist']=$id+”@”
$_SESSION['quatity']="1@";
如果第一次选择的id是2,那应该就是
$_SESSION['producelist']=”2@”
$_SESSION['quatity']="1@";
如果,再选择其他产品(不同id,比如是id为3的产品),$array=explode("@",isset($_SESSION['producelist'])?$_SESSION['producelist']:"");
$array是一个数组,值是2@。
继续执行,同上
$_SESSION['producelist']=”2@3@”
$_SESSION['quatity']="1@1@";
count($array)!=1为真,且!in_array($id,$array)为真,执行下面:
$_SESSION['producelist']=$_SESSION['producelist'].$id."@";
$_SESSION['quatity']=$_SESSION['quatity']."1@";
这不是多加一次了吗?
请老师,给予更详细的指导。
addgouwuche.php中的代码:
$array=explode("@",isset($_SESSION['producelist'])?$_SESSION['producelist']:"");
if(count($array)==1){
$_SESSION['producelist']=$_SESSION['producelist'].$id."@";
$_SESSION['quatity']=$_SESSION['quatity']."1@";
}
if(count($array)!=1){
if(!in_array($id,$array)){
$_SESSION['producelist']=$_SESSION['producelist'].$id."@";
$_SESSION['quatity']=$_SESSION['quatity']."1@";
}else{
$arrayquatity=explode("@",$_SESSION['quatity']);
$key=array_search($id,$array);
$arrayquatity[$key]=$arrayquatity[$key]+1;
$_SESSION['quatity']=implode("@",$arrayquatity);
}
}
在注册的时候,savereg.php中最后有如下代码,下面的$username,$producelist,$quatity在这里出现有何意义?
这里应该不是$_SESSION['producelist']...吧?
mysqli_query($conn,"insert into tb_user (name,pwd,dongjie,email,truename,sfzh,tel,qq,tishi,huida,dizhi,youbian,regtime,pwd1) values ('$name','$pwd','$dongjie','$email','$truename','$sfzh','$tel','$qq','$tishi','$huida','$dizhi','$youbian','$regtime','$pwd1')");
$username=$name;
$producelist="";
$quatity="";
echo "<script>alert('恭喜,注册成功!');window.location='index.php';</script>";
2.
在直接登录-->chkuser.php,验证后,直接session存储用户名。这个时候应该只是传递了name。
session_start();
$_SESSION['username']=$info['name'];
header("location:index.php");
exit;
3.在点击index.php点击购物时,跳转-->addgouwuche.php
下面的代码,这是第一次出现$_SESSION['producelist'],应该是空值吧,那$array这个数组也应该是空。count($array)为0,!in_array($id,$array)为真,执行下面语句。$_SESSION['producelist']=$id+”@”
$_SESSION['quatity']="1@";
如果第一次选择的id是2,那应该就是
$_SESSION['producelist']=”2@”
$_SESSION['quatity']="1@";
如果,再选择其他产品(不同id,比如是id为3的产品),$array=explode("@",isset($_SESSION['producelist'])?$_SESSION['producelist']:"");
$array是一个数组,值是2@。
继续执行,同上
$_SESSION['producelist']=”2@3@”
$_SESSION['quatity']="1@1@";
count($array)!=1为真,且!in_array($id,$array)为真,执行下面:
$_SESSION['producelist']=$_SESSION['producelist'].$id."@";
$_SESSION['quatity']=$_SESSION['quatity']."1@";
这不是多加一次了吗?
请老师,给予更详细的指导。
addgouwuche.php中的代码:
$array=explode("@",isset($_SESSION['producelist'])?$_SESSION['producelist']:"");
if(count($array)==1){
$_SESSION['producelist']=$_SESSION['producelist'].$id."@";
$_SESSION['quatity']=$_SESSION['quatity']."1@";
}
if(count($array)!=1){
if(!in_array($id,$array)){
$_SESSION['producelist']=$_SESSION['producelist'].$id."@";
$_SESSION['quatity']=$_SESSION['quatity']."1@";
}else{
$arrayquatity=explode("@",$_SESSION['quatity']);
$key=array_search($id,$array);
$arrayquatity[$key]=$arrayquatity[$key]+1;
$_SESSION['quatity']=implode("@",$arrayquatity);
}
}