2013-04-29 34 views
-1

我爲我的項目做了評論部分。但是我猜想它缺乏一些「安全性」?PHP:再次評論前設置時長

1)我可以評論儘可能多的,我想要的。
2)相似的評論沒有被禁用。

我想知道在PHP中是否有這樣的事情。

回答

-1

你需要自己實現這樣的事情。您可能想爲此使用PHP會話。

+0

爲什麼-1?有了這個問題中的所有信息,這是一個正確的答案。 – Lasse 2013-04-29 05:08:37

+0

我還沒有做downvote。但這不是答案,應該是評論。你有這麼多的代表評論有問題。 – 2013-04-29 05:10:29

+0

問題是,引用:「我想知道PHP中是否有這樣的事情。」 – Lasse 2013-04-29 05:13:15

1

您必須在數據庫中保存註釋。如果行areduplicate,您可以添加唯一索引這樣

ALTER IGNORE TABLE comments ADD UNIQUE INDEX comment_name (id, name); 
+0

這是有效的,但是對於一個好的軟件開發來說,這是一個破解,而不是一個適當的事情。如果這是實施的,它應該是非常好和清晰的文件。 – Lasse 2013-04-29 05:11:55

+0

另一種方式可能會建立一個cron工作對照表來檢查重複,如果他們是沖洗:) – 2013-04-29 05:14:07

1

1)如果您有保存在數據庫中的日期/時間值,你可以驗證如果「當你最後的評論是」與實際時間時間,當用戶嘗試添加新的評論。

但是,如果您想要在演示文稿中添加此驗證,您可以隱藏/禁用該部分一段時間並顯示/啓用此部分。

2)如果你想避免評論部分中的重複條目,驗證內容或標題是否與數據庫不同。

我想當你做第一次驗證(如果時間是5秒的例子),它是正確的再次評論,那麼你驗證,如果評論是相同的。

0

對於處理註釋並將其插入到數據庫中的代碼,您應該將檢查添加到(a)看看同一個人是否在最近X分鐘內發表評論,或者(b)查看是否有類似評論。 (a)很容易實現。我在這裏假設您要在數據庫中存儲註釋,其列爲user_id,列爲timestamp。然後,你可以運行一個查詢,看看是否該用戶已經離開的期限內評論(讓我們把它設置爲兩分鐘,這個例子。)

SELECT * FROM `comments` WHERE `user_id`='{$user_id}' AND DATE_SUB(NOW(), INTERVAL 2 MINUTE) < `timestamp` 

如果您運行的查詢,它返回一個排,那麼你知道用戶在兩分鐘之前就發表了評論。 (b)如果除了事實上沒有明確說明評論是「相似」的意思,更難以解決。您可以使用關鍵字或字符串比較函數(如Levenshtein)檢查文本中的相似性。您將遵循(a)中的相同邏輯,只需運行數據庫查詢以檢查相似性並在必要時報告錯誤。

如果您沒有找到與上述檢查相匹配的行,那麼您可以安全地將註釋插入數據庫。否則,您可以向用戶報告錯誤,或者您想要處理錯誤。

如果你進入更具體的細節,我相信有人可以幫助你進一步。

+0

謝謝jraede,你的解釋給了我的照片\ o – 2013-04-29 07:19:37