你现在的位置:首页 > PHP网站建设知识库 > phpbb > 正文

防止phpbb被恶意注册的程序

phpbb论坛每天都收到来自不同IP的恶意注册,并发一些垃圾贴子。感觉是注册机所为。 
为此在注册页面增加了一个一道数学题字段:) 

1. 修改ucp_register.html 

相应的源代码如下,需将其添加到ucp_register.html的confirm_code字段的下方: 

<dl>  
   <dt><label for="formula">标识数字:</label><br/>请在文本框中输入框右边算式的结果</dt>  
   <dd><input type="text" name="random_num" id="random_num" size="8" maxlength="8" class="inputbox narrow"/>  
   <span style="font-size:12pt;color:red">{RANDOM_FORMULA}</span>  
   </dd>  
</dl>  

2.修改includes\ucp\ucp_register.php 
2.1 在main方法最前面开启session 
session_start(); 

2.2 校验运算公式 
在confirm_code校验下方(大约在259行),添加如下代码 

//ADDED BY ALLEN  
$random_num = $_SESSION['random_num'];  
if ($random_num <> request_var('random_num', '')) {  
  $error[] = '您输入的运算结果不正确';  
}  


2.3 输出运算公式到注册页 
在$template->assign_vars上方增加代码 

$a = rand(1,100);  
$b = rand(1,100);  
$_SESSION['random_num'] = $a+$b;  

然后为$template->assign_vars()增加一个条目RANDOM_FORMULA 

$template->assign_vars(array(  
  'RANDOM_FORMULA' => $a . ' + ' . $b, //新增的条目  
  'ERROR'      => (sizeof($error)) ? implode('<br />', $error) : '',  
  'USERNAME'       => $data['username'],  
  ......