我的電子商務應用程序的購物車頁面上的許多會話變量中只有一個會以某種方式被破壞。當我將產品與會話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