2011-09-18 41 views
2

圖像隨機顯示供用戶評分。如何確保在一個會話中評分的圖像不會再次顯示給用戶評分?

但是,我已經將它設置爲當前狀態,行(來自數據庫的圖像)隨機加載rand(),因此即使用戶已經對它們進行了評級,也可能會再次顯示這些圖像中的一部分。

沒有用戶註冊,所以我不能檢查。

有沒有一種方法可以確保只有特定的會話,如果圖像被評級,它將不會再顯示?

回答

1

在會話數組或數據庫中保存顯示的圖像。 DB是最可靠的

+0

請舉個例子嗎? – oxo

+0

@oxo:$ _SESSION ['viewed_images'] [$ image_id] = true; – genesis

1

爲每個用戶分配一個臨時的隨機標識符。您可以將標識符存儲在URL中的Cookie或組件中。如果您使用表單,則可以將其存儲在表單中的隱藏字段中。因此,當用戶從一個頁面到另一個頁面時,標識符保持不變。

然後,您可以在數據庫中存儲用戶已經評分過的圖像。如果您隨機生成他們已經看到的圖像,只需生成一個新圖像。

這樣做的唯一問題是,一旦用戶看到很大一部分圖像,就會變得很痛苦。有幾個解決方案,但最簡單的可能只是爲用戶清空記錄並讓他們重新開始。

您可以通過僅搜索該標識符是否已提交該圖像的評分來避免分開記錄。

+0

我試圖這樣做,使用戶沒有看到他評價過的前100張圖片。是否可以使用SplFixedArray(100)設置會話數組? – oxo

+0

如果需要,您可以在瀏覽器中使用JavaScript。 –

1

如果您的意思是隻保存當前會話的額定圖像列表,即直到用戶的瀏覽器打開。您可以將其存儲在PHP會話對象中。在php.net上查看PHP Sessions

但是如果您想爲用戶記住它,以便即使在瀏覽器重新啓動時也不會再顯示相同的圖像,那麼您需要將以前評級的圖像列表存儲在數據庫以及帶有ID的持久cookie。

相關問題