2011-04-29 51 views
1

我有一些信息存儲在$ _SESSION中,會話通過自定義會話處理程序存儲在數據庫中。是否可以清除不同會話的變量?

有沒有一種標準的方法來模擬具有會話ID的會話或從另一個會話中清除特定的變量。

我在問這個問題,因爲我有我的web應用程序,其會話變量本身可以工作,這是一個實際的購物車,其中包含使用paypal的訂單信息。 Paypal通過IPN(通知)返回支付響應,這是從他們的服務器向我的網站發出的請求。這些請求當然會開始他們自己的會議。

我想找到的方法是清除原來的會話變量從看到不同會話的PayPal通知請求。有沒有辦法做到這一點?

一個想法可能是手動編輯存儲會話數據的數據庫,但我想尋找標準的東西,而不管會話處理程序如何。

+0

「模仿」會話的標準方式稱爲「會話劫持」;並且通常由您通常希望保護您的網站的人員使用。對於使用貝寶技術,我一定會感到不舒服。 – 2011-04-29 20:10:35

回答

0

會話因瀏覽器cookie而工作。如果您刪除了該cookie,它將創建一個新的會話。如果您將Cookie更改爲另一個會話的cookie,則您現在正在模擬該會話。

您可以使用Chrome的開發人員工具或Web Developer Firefox插件輕鬆訪問您的瀏覽器Cookie。

+0

它默認使用cookie,我使用我自己的會話處理程序在數據庫上存儲數據。我不想更改/更改Cookie或數據庫,我正在尋找一種常規方法 – Mescalito 2011-04-29 20:32:45

+0

所有會話都使用cookie,無論您將它們存儲在服務器上的哪個位置。這是從請求中識別特定用戶的唯一(實用)方法。我可能不會理解你的問題。 – 2011-04-29 20:36:53

0

您是否嘗試創建會話數組並給它一個id。

這樣

$_SESSION['ipn'] =""; 
$_SESSION['ipn']= "Mescalito"; 
+0

不知道我在這裏跟着你,只是將數據添加到$ _SESSION,這不是我真正想要的。 – Mescalito 2011-04-29 20:34:15

1

我問到這個問題,因爲我有我的web應用程序,對自己的工作的會話變量,這是實際購物車中有使用貝寶訂單信息。 Paypal通過IPN(通知)返回支付響應,這是從他們的服務器向我的網站發出的請求。這些請求當然會開始他們自己的會議。

我想找到的方法是清除原來的會話變量從看到不同會話的PayPal通知請求。有沒有辦法做到這一點?

如果您發現自己需要在其他人的會話中編輯數據,則不應將該數據存儲在會話中以開始。

如果您需要閱讀或以其他方式使用IPN,可能應將其存儲在數據庫中的實際表格中。您可以將該行與用戶的會話ID相關聯,或者最好使用其登錄名或電子郵件地址。

0

這應該不是必需的。

我很肯定你可以在IPN中指定一個唯一的工作ID。使用該唯一ID找出通知所屬的用戶,並編輯其數據。不要爲此討論會議,這是糟糕的設計。

相關問題