2010-07-10 107 views
1

我有在我是如何做到這一點的認識麻煩:會話問題

    我主頁上的項目,當用戶對鼠標,我把他們帶到一個網頁,我問的
  • 有無名單姓名和電子郵件ID(兩者都是可選字段),當用戶點擊提交時,我會將他們帶到其他頁面以查看所有詳細信息。該名稱和電子郵件字段的原因是將該ip地址存儲在mysql中以及它們所在的url(具有項目標識和日期)。

要做到這一點,我有在程序做麻煩。

  1. 我打算一旦他們點擊提交就開始會話/存儲cookie。之後,我想存儲的IP地址,商品編號,日期和名稱/電子郵件(如果他們填寫)在MySQL數據庫
  2. 存儲所有的MySQL數據庫

此外,我怎麼能避免任何會直接到頁面(我提交後顯示的那個)?有什麼辦法可以在該頁面上添加一些條件並將它們重定向到此頁面上的日誌?

請幫我一把。

問候

+0

「爲名字和電子郵件領域的原因是存儲在MySQL中的IP地址,並在網址(有項目編號和日期),他們都在。」你不需要詢問名字和電子郵件。 – Artefacto 2010-07-10 15:00:36

+0

我同意你的觀點,儘管我需要這樣做,因爲當用戶點擊主頁中的項目列表時,只有當項目是用於今天的時候,表單字段中的日誌纔會顯示,如果項目在未來。所以爲了使這種情況正確,我認爲我會顯示這個日誌的項目,並說,項目現在正在顯示,提交看它。而他們這樣做,我會收集ip,項目的細節只是今天的事件。這樣我可以避免會議/存儲的東西不是今天的項目。 – Jay 2010-07-10 15:06:09

回答

1

由於數據似乎只爲眼前的使用是必要的,我認爲一個會話是在這種情況下,正確的答案。
如果您將使用數據庫查詢,您將存儲哪些數據以將數據關聯到正確的用戶?正如你所說,你所要求的數據都是可選的;即使在不可選的情況下,您如何處理兩個不同的用戶報告相同的名稱和電子郵件(它也可以是使用兩個不同瀏覽器的同一用戶)。

對於這樣的臨時數據,會話永遠是更好的選擇(可能除少數例外)。

我忘記了另一個問題。
在這種情況下,我會使用會話變量。會話變量是您想要在不同表單之間保留的值的解決方案,無需在服務器和客戶端之間繼續移動它們。

有關會話的詳細信息,請參閱PHP: Sessions

+0

我仍在爲此工作。一旦我完成,我會發布我的反饋。再次感謝! – Jay 2010-07-13 12:06:50

2

既然你設置會話變量,當用戶點擊提交按鈕,你可以,如果這些變量中的一個設置或測試,並相應重定向。

你也可以做到這一點與POST,使用頁面作爲一個動作表單,每當有人訪問該頁面,您測試,如果(從表單)$ _ POST變量的設置與否。

+0

我不確定如何開始會話,我如何驗證其工作與否。我應該在頁面上顯示登錄頁面還是在頁面上點擊提交按鈕後開始會話? – Jay 2010-07-10 15:03:31

+0

@Jay:只需使用'session_start()'。如果你想驗證會話是否已經啓動(爲了避免再次啓動),那麼檢查'session_id()'返回的值。如果會話尚未啓動,返回的值將是一個空字符串。 – kiamlaluno 2010-07-10 15:09:22