2011-11-24 164 views
2

我需要Web上的PHP和JS腳本的幫助。防止用戶打開同一網站的多個實例

我想要做的就像購物車。產品信息通過url參數傳遞並存儲在PHP中的SESSIONS中。 (例如:http://www.mysite.com/pid=13

如果用戶打開瀏覽器並加載http://www.mysite.com/pid=25一個新的標籤,第二個選項卡會顯示與2項更新的車,但第一個選項卡將只顯示1項,除非我手動刷新。

我需要的是:

  1. 當用戶訪問我的網站上的第一次,信息將被加載。
  2. 當用戶在瀏覽器(例如新標籤)上打開同一站點的另一個實例(相同的URL)時,第二個實例將被關閉,第一個實例將被刷新以加載一些更新的信息。

簡而言之,我不希望用戶通過強制關閉第二個選項卡並刷新第一個選項卡來在同一瀏覽器中打開我的站點的多個實例。有什麼辦法可以使用PHP和JS的組合嗎?

+1

聽起來讓最終用戶感到沮喪。 – alex

+0

像亞馬遜這樣的大型網站不會爲此煩惱,所以如果我是你,我也不會。 – nnnnnn

+0

如果有人將2件物品添加到購物籃中,您應該對自己的訪客更有信心,您是否認爲這會讓您感到困惑,您是否希望用戶右鍵點擊以在新標籤頁中打開,併發生了一些奇怪的事情,然後他們點擊返回或關閉,銷售... –

回答

0

解決方案不是更改您網站的刷新/加載行爲。相反,我會改變你現在在你的店裏儲存/保存物品的方式。如果客戶將文章放入購物車,我會建議做一個Ajax回發。

如果你這樣做,你不需要重定向客戶到任何新的網站。邏輯將「神奇地發生」作爲後退過程。

如果客戶稍後訪問他的購物車,則可以使用用戶標識從數據庫加載它。

如果您不想使用像jquery這樣的大型圖書館,您也可以用一個簡單的彈出窗口取代您的保存邏輯,這個工作就是:→點擊添加到購物車按鈕,打開mypopup.php?articleId = 5,將數據保存到數據庫中,自動關閉彈出菜單

有任何問題嗎?不要猶豫,以使用評論:)

0

從你的問題,我相信你通過'get'添加項目到購物車。 我建議你通過'POST' 添加,而不是把你的唯一ID和其他項目相關的數據以隱藏的形式。 如:

<form action="add_to_cart.php" method="post"> 
<p>Some Item Name</p> 
<input type="hidden" name="item_name" value="Some Item Name" /> 
<p>Description: SOME DESCRIPTION</p> 
<input type="hidden" name="description" value="Some Description" /> 
<p>Price: $123.00</p> 
<input type="hidden" name="price" value="123.00" /> 
<input type="hidden" name="item_id" value="123" /> 
<!-- GENERATE TOKENS FOR YOUR FORM TO PREVENT XSS/CSRF attack --> 
<input type="hidden" name="token" value="somerandomtoken" /> 
<input type="submit" name="add_to_cart" value="Add to Cart" /> 
</form> 

在這種情況下,用戶只能通過提交此表單中添加項目到購物車。 希望這有助於。