2014-01-22 61 views
1

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

+0

每個頁面上缺少'session_start()'。 - http://php.net/manual/de/function.session-start.php –

+0

這個問題在每個瀏覽器中還是僅在Chrome中?如果它與chrome相關,請確保包含favicon。 – Perry

+0

@Perry我想到了這一點,但它也在firefox中提供同樣的東西。 – coder101

回答

1

您可能需要將session_start()添加到文件頂部。

編輯: 你說你在查詢會話ID和訂單ID,但你也有

and od.product_id = p.id 

在查詢結束。這個邏輯在哪裏?我猜你正在使用$ _GET請求或類似的東西來確定產品ID。也許這與你的問題有關,可能只是將它從查詢中刪除?您應該只需要爲您的SQL查詢使用一個唯一鍵,特別是與您創建的散列一樣唯一。

+0

那麼,沒有進攻,但我知道,我在包含'session_start'的頁面上都包含函數文件,這解釋了session_id沒有清空。 – coder101

+0

@ coder101我不是在想你不知道,我只是沒有看到它作爲代碼的一部分。 – codeaddict

+0

@ coder101參見已編輯的答案 – codeaddict

0

一個顯而易見的問題,但請檢查你是否在兩個頁面上都調用session_start()?

+0

請檢查我的問題的更新部分。 – coder101

相關問題