Skip to content

phpBB2 與 Captcha

十一月 11, 2006

接手某 phpbb2 的管理事務,然後大版主前陣子打電話來說因為很多機器人會亂註冊+spam擾民,希望可以效法其它論壇做法, 在註冊與發文兩個頁面加上圖形驗證的功能。

原本記憶中後來的 phpbb2 版本都有內建 captcha 才對,進去管理介面後卻怎麼找都沒有,竟然沒有內建的 captcha 功能,原本的維護者不是我,所以老實說我也不清楚為何會沒有這功能,猜想是一路升級上來時,可能漏掉了相關的程式碼。

Anyway, 既然沒有,那就只好自己動手把它加上去,所用的 package 叫做 Freecap,然後大概改幾個設定檔與字型就差不多了,結果故事還沒結束,前幾天主機聽說掛點,然後造成系統回復到十月中的備份結果,意思就是說,我後來加上去的 captcha 功能就這樣被洗掉了。

為了防止再次的事件發生,所以特別多了幾個備份檔丟到不同電腦上,順便也在這裡留下紀錄。

首先,到原作者的 網站 抓這個程式,把我要的數字字型造出來,然後放到 freecap/.ht_arial_font.gdf,接著總共改四個檔案︰

第一個,是新增帳號時會丟出來的頁面︰

--- backup/profile_add_body.tpl 2006-11-11 13:17:31.000000000 +0800
+++ profile_add_body.tpl 2006-11-10 21:22:18.000000000 +0800
@@ -47,6 +47,21 @@

+ <tr>
+ <td class="row1"><span class="gen">圖形驗證碼:</span><br />
+ </td><td class="row2">
+ <img src="/php/freecap/freecap.php" />
+ <div style="margin:0.5em 0;">
+ <label for="captcha">輸入上方圖片中之數字組合共五碼:</label>
+
+ </div>
+ <div style="font-size:10px;">
+ 若無法正確辨認圖形時, 請
+ <a href="#">點選此連結</a>
+ 以重新產生圖片.
+ </div>
+ </td>
+ </tr>
<tr>
<td class="catSides" colspan="2" height="28"> </td>
</tr>

第二個,是建立帳號時檢查的頁面︰


--- backup/usercp_register.php 2006-11-11 13:17:29.000000000 +0800
+++ usercp_register.php 2006-11-10 21:22:19.000000000 +0800
@@ -247,6 +247,15 @@
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
}
+
+ // added by keanu for the captcha support, 10/11/06
+ session_start();
+ if (!isset($_POST['captcha']) || !isset($_SESSION['freecap_word_hash']) || $_SESSION['hash_func']($_POST['captcha']) != $_SESSION['freecap_word_hash'])
+ {
+ $error = TRUE;
+ $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . "您輸入的圖形驗證碼有誤, 請重新輸入.";
+ }
+ unset($_SESSION['freecap_word_hash']);
}

$passwd_sql = '';

第三個,是發表文章時會丟出來的頁面︰


--- backup/posting_body.tpl 2006-11-11 13:17:31.000000000 +0800
+++ posting_body.tpl 2006-11-10 21:22:22.000000000 +0800
@@ -418,6 +418,25 @@

+
+<!-- BEGIN switch_user_logged_out -->
+ <tr>
+ <td class="row1"><span class="gen">圖形驗證碼</span><br /></td>
+ <td class="row2">
+ <img src="/php/freecap/freecap.php" />
+ <div style="margin:0.5em 0;">
+ <label for="captcha">輸入上方圖片中之數字組合共五碼:</label>
+
+ </div>
+ <div style="font-size:10px;">
+ 若無法正確辨認圖形時, 請
+ <a href="#">點選此連結</a>
+ 以重新產生圖片.
+ </div>
+ </td>
+ </tr>
+<!-- END switch_user_logged_out -->
+
<tr>
<td class="row1" valign="top"><span class="gen"><b>{L_OPTIONS}</b></span><br /><span class="gensmall">{HTML_STATUS}<br />{BBCODE_STATUS}<br />{SMILIES_STATUS}</span></td>
<td class="row2"><span class="gen"> </span>

最後一個,則是處理與檢查發文的頁面︰


--- backup/posting.php 2006-11-11 13:17:30.000000000 +0800
+++ posting.php 2006-11-10 21:22:21.000000000 +0800
@@ -259,6 +259,16 @@
}
break;
}
+
+ session_start();
+ if(isset($_POST['captcha']))
+ {
+ if (!isset($_SESSION['freecap_word_hash']) || $_SESSION['hash_func']($_POST['captcha']) != $_SESSION['freecap_word_hash'])
+ {
+ message_die(GENERAL_MESSAGE, "您輸入的圖形驗證碼有誤, 請重新輸入.");
+ }
+ }
+ unset($_SESSION['freecap_word_hash']);
}

大致上就這樣...

廣告
2 則迴響 leave one →
  1. 六月 19, 2013 8:51 下午

    Hello! I realize this is kind of off-topic but I had to ask.
    Does building a well-established website like yours take a large amount of work?
    I am completely new to blogging but I do write in my journal every day.

    I’d like to start a blog so I can share my own experience and thoughts online. Please let me know if you have any kind of ideas or tips for new aspiring blog owners. Thankyou!

  2. 七月 23, 2013 11:20 下午

    This is my first time pay a visit at here and i am genuinely impressed to read everthing at one place.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: