2011-11-30 32 views
0

我有一個社交網絡,允許用戶發佈博客,提問和留言。我們在發送垃圾郵件時遇到了一些小問題。例如,我們有用戶註冊,並試圖出售東西,每分鐘寫出6個博客。通過PHP限制活動

我正在尋找一種快速方法來限制這些活動的用戶id,比方說,只允許他們每天發佈3個博客。

我將用戶存儲在$auth變量中,並通過OOP將它們提升爲$auth->id以便更具體。

尋找一個快速,簡單的方法來做到這一點通過PHP。

由於事先/ **編輯* ****/

這是我到目前爲止,我知道肯定$太多計數,因爲它應該,但由於某種原因,我的if(statement未停止發佈第四篇博客。 HERE是代碼

+3

也許一個更好的主意是執行上註冊或上發佈博客一個CAPTCHA要麼,那肯定會減少我們已經驗證過的機器人垃圾郵件 – Skuld

+0

的數量,但這些數據並不適用於這些部分。這會有所幫助,而且會做,但這些都是手動用戶。 – LightningWrist

回答

3

類似CAPTCHA將是適當的。但是,如果他們手動輸入,那麼阻止他們就沒有多大用處。無論如何,沒有理由不能實現這兩種方法。

我假設你的博客表中有一個created字段。只需在表格中查詢當前日期的博客數量,然後再發布另一個博客。不確定你正在使用的數據庫/ API。在MySQL中,您可以執行以下操作:

SELECT COUNT(*) 
FROM blogs 
WHERE user_id = USERID 
AND DATE(created) = '2011-11-30' 
+0

+1原因我還沒有足夠的遊戲來添加我的CAPTCHA評論作爲部分答案,重新驗證碼是一個好的 – Skuld

2

當用戶編寫和提交帖子時,保存他們發佈在帖子表上的日期。選擇並計算他們今天發佈的次數。如果他們在他們的限制之下,允許帖子或者給他們錯誤/警告信息。

1

當柱子是,這樣做:

// Get last post time and number of posts today from database 
$query = "SELECT 
      last_post, 
      posts_today 
      FROM 
      users 
      WHERE 
      id = '$auth->id'"; 
$result = mysql_fetch_assoc(mysql_query($query)); 

// See if this is the first post today 
$isNewDay = date('Y-m-d') != date('Y-m-d',strtotime($result['last_post'])); 
$postsToday = ($isNewDay) ? 0 : (int) $result['posts_today']; 

// Only add post if user is allowed 
if ($isNewDay || $postsToday < 3) { 
    /* 
    Add the post to the database here 
    */ 
    // Update the number of posts today in the database 
    $query = "UPDATE 
       users 
      SET 
       last_post = '".date('Y-m-d H:i:s')."', 
       posts_today = '".($postsToday + 1)."' 
      WHERE 
       id = '$auth->id'"; 
    mysql_query($query); 
} else { 
    echo "You have already made 3 posts today!"; 
} 

...或者你可以只使用一個CAPTCHA(如其他人所說)。這就是他們的目的。真的,你應該有一個在註冊過程中...

+0

我有一個驗證碼在註冊和其他地方,仍然不會停止手動發送垃圾郵件 – LightningWrist

+0

@LightningWrist你那麼需要更好的CAPTCHA。嘗試[reCAPTCHA](http://www.google.com/recaptcha)。 – DaveRandom

+0

我使用reCaptcha。這不是一個驗證碼問題。它正在做它的工作。我在問如何限制。完全分開的問題。 – LightningWrist

1

我承認我旁邊沒有關於PHP編程知道,但另一種選擇(或除CAPTCHA)是使用一種服務,例如StopForumSpam

還有的how to use it here一個例子(不知道它有多好,因爲我沒有PHP代碼(還)):)

+0

(全面披露:我是StopForumSpam版主)我們也有一些貢獻可以在這裏找到:http://www.stopforumspam.com/contributions-加上官方文檔(爲了目前工作人員的清晰, )在這裏使用API​​:http://www.stopforumspam.com/usage – damianb