我的电子商务应用程序的购物车页面上的许多会话变量中只有一个会以某种方式被破坏。当我将产品与会话ID一起添加到购物车时,它会创建一个order_id(使用一些散列和盐逻辑),并将其放入会话变量中,当我转到购物车页面时,它会根据order_id和session id来获取购物车中的产品。它第一次获取记录,但之后立即如果我重新加载页面,它会得到一个空的order_id。我正在拉我的头发,以便只有一个会话变量被刷新。会话变量在页面重新加载后为空
它正在发生的事情只有Web服务器上,但工作在本地主机
我add_to_cart.php
(会话逻辑)完全罚款
if(empty($_SESSION['sessid'])){
$_SESSION['sessid'] = session_id();
}
$user_sessid = $_SESSION['sessid'];
$ip = get_ip_address();
if(empty($_SESSION['order_id'])){
$ip = get_ip_address();
$with_time = strtotime("now");
$addsalt = substr(md5($ip.uniqid($with_time,true)),0,15);
$_SESSION['order_id'] = $addsalt;
}
$order_id = $_SESSION['order_id'];
我cart.php
(会话逻辑只)
$user_sessid = $_SESSION['sessid'];
$order_id = $_SESSION['order_id'];
$userid = $_SESSION['user_id'];
if(empty($userid)){
$r_type = 1;
$q1=<<<SQL
select od.ipaddress, od.modified_ts, od.product_id,od.discount,od.quantity,p.id,p.name,p.price, p.img_dir,p.img_name from orders od, products p where od.order_id='$order_id' and od.user_sessid='$user_sessid' and od.product_id = p.id
SQL;
} else {
$r_type = 2;
$q1=<<<SQL
select uc.modified_ts, uc.product_id,uc.discount,uc.quantity,p.id,p.name,p.price, p.img_dir,p.img_name from user_cart uc, products p where uc.userid='$userid' and uc.product_id = p.id
SQL;
}
$r1=$db->query($q1);
$num1 = $r1->num_rows;
当我回应关于立即重新加载购物车页面的查询时, pty order_id
。
我想知道我的脑袋是如何发生这种奇怪的事情。请帮助...
更新我在包含session_start
的页面顶部包含一个文件,因此它解释了正在创建和使用的user_sessid。
每个页面上缺少'session_start()'。 - http://php.net/manual/de/function.session-start.php –
这个问题在每个浏览器中还是仅在Chrome中?如果它与chrome相关,请确保包含favicon。 – Perry
@Perry我想到了这一点,但它也在firefox中提供同样的东西。 – coder101