2011-09-15 30 views
0

我想確保您只能點擊贊成或拇指向下每個表項?如何正確實施大拇指向上/向下動作?

我的訪客沒有登錄,所以我的假設是,我可以檢查您的IP,並使用JSON發送信息到數據庫以記錄IP地址和該表條目的ID。那麼如果用戶再次點擊豎起大拇指,使用JSON做一個快速的SQL存在來確定IP和文本ID是否存在。如果沒有,那麼豎起大拇指點擊就會通過。

看起來像這樣是一個單調乏味的,非優雅的解決方案,速度會很慢,會佔用大量的數據庫空間。任何想法/幫助改善?

使用ruby 1.9.2,rails 3.1,jquery。

+0

您的解決方案聽起來像是實現此目標的最佳方法... – Nayish

+0

基於IP的解決方案的問題是公司等人通常共享一個IP。當我們試圖以這種方式阻止用戶並且必須阻止用戶時,我們遇到了這個問題。也許去IP地址+用戶代理組合或什麼的。 –

回答

0

對於NAT路由器(例如任何辦公室或商業組織)後面的任何用戶,使用IP地址作爲用戶標識符將是有問題的,因爲這些都將被識別爲相同的用戶。

在這種情況下,客戶端上的Cookie可能會更準確,但這也不是100%可靠,因爲用戶可以清除Cookie或可能已完全禁用Cookie。

這是一個設計問題,而不是技術問題;跟蹤用戶狀態的根本問題是無法識別用戶。但如果您希望爲用戶提供與用戶交互的便利而無需登錄,這是一種妥協。

0

我的這種功能的實現是很類似於你:

  • 如果一個按鈕用戶點擊,通過JavaScript禁用它,併發送一個AJAX請求到服務器
  • 在你的數據庫不添加一個新的列到您的數據庫。最好添加一個存儲IP,投票(上或下)和ID參考的新表格。這將有助於您保留表格,並且在未來更改投票系統會更容易。
  • 當您從PHP繪製頁面時,如果用戶之前投票過,請考慮投票並繪製按鈕(上下)。

正如邁克爾指出的,在某些情況下,純IP方法還不夠好。也許你可以通過添加其他瀏覽器特定的變量來強制你的系統,但這取決於你需要的安全程度(因爲用戶可以使用兩個不同的瀏覽器投票兩次)。你會發現更多關於這個here的信息。

我希望這對你有意義。