PHP Fusion 7 CAPTCHA类使用指南

PHP Fusion 7是一个开源的内容管理系统,它允许用户创建和管理网站。为了增强安全性,CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)被广泛用于验证用户输入。本文将介绍如何在PHP Fusion 7项目中使用CAPTCHA类。

创建数据库和表

首先,需要为存储CAPTCHA代码创建一个数据库和表。以下是创建数据库和表的SQL语句:

CREATE DATABASE `phpfusion7`; DROP TABLE IF EXISTS `phpfusion7`.`fusion_captcha`; CREATE TABLE `phpfusion7`.`fusion_captcha` ( `captcha_datestamp` int(10) unsigned NOT NULL default '0', `captcha_ip` varchar(20) NOT NULL, `captcha_encode` varchar(32) NOT NULL default '', `captcha_string` varchar(15) NOT NULL default '', PRIMARY KEY (`captcha_datestamp`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

如果更改了数据库或表的名称,还需要在类文件中更改一些信息,比如config.phpmultisite_include.php

数据库配置文件

接下来,需要创建一个包含数据库设置的PHP文件,这里使用PHP Fusion的默认文件config.php

<?php // 数据库设置 $db_host = "localhost"; $db_user = "root"; $db_pass = ""; $db_name = "phpFusion7"; $db_prefix = "fusion_"; define("DB_PREFIX", "fusion_"); ?>

已经将这个文件复制到项目中,名为multisite_include.php。这个文件存在于PHP Fusion项目中,包含了数据库表的名称。

CAPTCHA类配置

在PHP Fusion 7中,securimage.php包含了CAPTCHA类。现在让看看如何调整这个类的变量。

<?php var $image_width = 140; // CAPTCHA图像的宽度 var $image_height = 45; // CAPTCHA图像的高度 var $image_type = SI_IMAGE_PNG; // CAPTCHA图像类型 var $code_length = 4; // CAPTCHA代码的长度 var $charset = 'ABCDEFGHKLMNPRSTUVWYZ23456789'; // 创建CAPTCHA代码的所有字符 var $use_wordlist = true; // 使用文件中的字符 var $use_gd_font = false; // 使用GD字体 var $gd_font_file = 'gdfonts/bubblebath.gdf'; // GD字体的名称 var $gd_font_size = 20; // GD字体的大小 var $ttf_file = './elephant.ttf'; // TTF字体文件的路径 var $font_size = 24; // TTF字体的大小 var $text_angle_minimum = -20; // CAPTCHA代码的最小角度 var $text_angle_maximum = 20; // CAPTCHA代码的最大角度 var $text_x_start = 8; // 写入CAPTCHA代码的X位置的开始 var $text_minimum_distance = 30; // CAPTCHA单词之间的最小距离 var $text_maximum_distance = 33; // CAPTCHA单词之间的最大距离 var $image_bg_color = '#e3daed'; // CAPTCHA图像的背景色 var $text_color = '#ff0000'; // CAPTCHA图像的文本颜色 var $use_multi_text = true; // 多彩文本 var $multi_text_color = '#0a68dd,#f65c47,#8d32fd'; // 多彩文本颜色 var $use_transparent_text = true; // 显示透明文本 var $text_transparency_percentage = 50; // CAPTCHA代码透明度的百分比 var $draw_lines = true; // 在CAPTCHA图像中绘制线条 var $line_color = '#80BFFF'; // 线条的颜色 var $line_distance = 5; // 线条之间的距离 var $line_thickness = 1; // 线条的厚度 var $draw_angled_lines = false; // 绘制有角度的线条 var $draw_lines_over_text = false; // 在文本上绘制线条 var $arc_linethrough = true; // 在CAPTCHA图像中的单词上绘制两个弧线 var $arc_line_colors = '#8080ff'; // 弧线的颜色 var $audio_path = './audio/'; // 音频文件的路径 ?>

这些变量允许自定义CAPTCHA的外观和行为。

生成CAPTCHA图像

securimage_show.php用于生成CAPTCHA图像。需要正确地使用它。

<script language="javascript" type="text/javascript"> function RefreshCaptcha() { var captchaImage = document.getElementById('captcha'); captchaImage.src = 'securimage/securimage_show.php?sid=' + Math.random(); return false; } </script> <img src="securimage/securimage_show.php?sid=' + Math.random();" alt="Validation Code" name="captcha" width="145" height="45" align="left" id="captcha" /> <a onclick="RefreshCaptcha();" href="#"> <img align="top" alt="" src="securimage/images/refresh.gif" /> </a> <a href="securimage/securimage_play.php"> <img align="top" style="margin-bottom: 1px;" alt="" src="securimage/images/audio_icon.gif" /> </a>

这段代码将在网页上显示CAPTCHA图像,并允许用户刷新和播放音频。

获取CAPTCHA代码

最后,可以通过MySQL查询来访问CAPTCHA代码。以下是PHP代码示例:

<?php function getCode() { require_once("config.php"); require_once("securimage/multisite_include.php"); mysql_connect($db_host, $db_user, $db_pass); mysql_select_db($db_name); $result = mysql_query("SELECT MAX(captcha_datestamp), captcha_string FROM ".DB_CAPTCHA." WHERE captcha_ip='".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error()); if (mysql_num_rows($result)) { $data = mysql_fetch_assoc($result); return strtoupper($data['captcha_string']); } else { return ""; } } $captchaCode = getCode(); echo $captchaCode; ?>

这段代码将从数据库中检索最新的CAPTCHA代码,并将其转换为大写字母。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485