phcms各个地方加上验证码
2014-02-09 14:26:41   来源:   浏览: 次

导读:在pc里面很多地方需要用到验证码,其实加验证码很简单,只要是需要的地方加入如下代码就OK了: 前台模板里面加入: <input name="code" t
在pc里面很多地方需要用到验证码,其实加验证码很简单,只要是需要的地方加入如下代码就OK了:
前台模板里面加入:
<input name="code" type="text" id="code" size="10"  class="input-text"/> <img id='code_img' onclick='this.src=this.src+"&"+Math.random()' src='http://127.0.0.1/api.php?op=checkcode&code_len=4&font_size=14&width=110&height=30&font_color=&background='>
 
后台验证程序里面加入:
在PHP处理页头加入
$session_storage = 'session_'.pc_base::load_config('system','session_storage');
pc_base::load_sys_class($session_storage);
加这个的原因是验证码是以session方式储存的,而它可能被存入数据库,但不管怎么存只要加了上面两行代码就可比较验证码和SESSION里面的数据是否一至
 
接下来在数据的处理流程处先加入对验证码的处理,再接着做其他的事情 代码如下:
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
showmessage(L('code_error'), HTTP_REFERER);
   }
 
这样就实现了验证功能
 
下面以表单向导模块数据提交加验证码为例说明:
先在模板show_js.html文件加入验证码:
在{/loop}后面加入:
<tr>
<td>验证码</td>
<td>
<input name="code" type="text" id="code" size="10"  class="input-text"/> <img id='code_img' onclick='this.src=this.src+"&"+Math.random()' src='http://127.0.0.1/api.php?op=checkcode&code_len=4&font_size=14&width=110&height=30&font_color=&background='>
</td>
</tr>
 
 
然后修改处理页面:
找到表单向导模块下的index.php文件,
在define('CACHE_MODEL_PATH',PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);
后面加入:
$session_storage = 'session_'.pc_base::load_config('system','session_storage');
pc_base::load_sys_class($session_storage);
找到处理流程的开始处:也就是 if (isset($_POST['dosubmit'])) {
是下一行加入如下代码:
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
showmessage(L('code_error'), HTTP_REFERER);
}
 
结束了,这样表单向导前台提交数据就有验证码功能了