ThinkPHP验证码不现实的处理方法

ThinkPHP测试的时候遇到验证码不显示的问题,主要解决思路如下:

1、php.ini是否开启gd库;

2、页面编码是否一致;

3、检查页面头部信息BOM,这是最主要的,把下面代码复制到根目录下,然后访问一下这个文件,然后再刷新验证码页面(清除BOM头),验证码即可出现。

if (isset($_GET[‘dir‘])){ //设置文件目录
$basedir=$_GET[‘dir‘];
}else{
$basedir = ‘.‘;
}
$auto = 1;
checkdir($basedir); 

function checkdir($basedir){
if ($dh = opendir($basedir)) {
  while (($file = readdir($dh)) !== false) {
   if ($file != ‘.‘ && $file != ‘..‘){
    if (!is_dir($basedir."/".$file)) {
     echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";
    }else{
     $dirname = $basedir."/".$file;
     checkdir($dirname);
    }
   }
  }
closedir($dh);
}
} 

function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
  if ($auto == 1) {
   $rest = substr($contents, 3);
   rewrite ($filename, $rest);
   return ("<font color=red>BOM found, automatically removed.</font>");
  } else {
   return ("<font color=red>BOM found.</font>");
  }
}
else return ("BOM Not Found.");
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum); 
时间: 2024-08-28 05:02:55

ThinkPHP验证码不现实的处理方法的相关文章

ThInkPHP验证码不显示,解决方法汇总

出现ThInkPHP验证码不显示的情况 官方提示如下:如果无法显示验证码,请检查:① PHP是否已经安装GD库支持:② 输出之前是否有任何的输出(尤其是UTF8的BOM头信息输出):(打开验证码文件为乱码,也有可能是BOM编码,可查看下方2寻找解决方法)③ Image类库是否正确导入:④ 如果是中文验证码检查是否有拷贝字体文件到类库所在目录: ⑤URL_MODEL模式,有些服务器不支持REWRITE . 针对上面的情况,一一检查 1.可以用phpinfo 查看GD库是否开启,phpinfo打印出

ThinkPHP函数详解:C方法

浏览:65531 发布日期:2012/09/14 分类:文档教程 关键字: 函数 C方法 C方法是ThinkPHP用于设置.获取,以及保存配置参数的方法,使用频率较高.了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的.ThinkPHP的配置文件采用PHP数组格式定义.由于采用了函数重载设计,所以用法较多,我们来一一说明下.设置参数 C('DB_NAME','thinkphp'); 表示设置DB_NAME配置参数的值为thinkphp,由于配置参数不区分大小写

Thinkphp编辑器扩展类kindeditor使用方法

一, 使用前的准备. 使用前请确认你已经建立好了一个Thinkphp网站项目. 1,Keditor.class.php和JSON.class.php 是编辑器扩展类文件,将他们复制到你的网站项目的ThinkPHP\Lib\ORG\Net 文件夹下. 2,editor文件夹是kindeditor的核心包.将其复制到你项目的Public文件夹下(和入口文件同级的那个Public),并在Public下再建立一个Upload文件夹,用于存放使用编辑器上传的图片. 3,KeditorAction.clas

thinkphp模板中使用函数的方法

1.执行函数并输出返回值:格式:{:function(-)} 例如,输出U函数的返回值: {:U('User/insert')} 编译后的PHP代码是 <?php echo U('User/insert');?> 2.执行函数但不输出 : 格式:{~function(-)} 例如,调用say_hello函数: {~say_hello('ThinkPHP')} 编译后的PHP代码是: <?php say_hello('ThinkPHP');?> thinkphp模板中使用函数的方法

PHP网站验证码图片不显示解决方法

找到php.ini配置文件之后,双击打开,hp_gd2.dll,找到如下图1-2所示.查看extension=php_gd2.dll前面是否有;号,如果有的话,去除,保存.编者注:如果php.ini是在系统目录下的话,保存之后重起电脑才生效,如果是系统变量里直接指定的话,重起IIS服务器或者重起apache服务器即可生效(不用重起服务器电脑). 如果找不到php.ini文件,在别的电脑拷贝一个即可. PHP网站验证码图片不显示解决方法

ThinkPHP的D方法和M方法的区别

M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 M方法: 对数据表进行简单的 CURD 操作而无复杂的业务逻辑时只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用M方法 甚至可以简单看着就是对参数表名对应的数据表的操作: $User = M('User'); 使用D方法 如果是如下情况,请考虑使用

ThinkPHP验证码类

//ThinkPHP验证码类使用$config = array( 'fontSize' => 30, // 验证码字体大小 'length' => 3, // 验证码位数 'useNoise' => false, // 关闭验证码杂点 ); $Verify = new \Think\Verify($config); $Verify->entry();

ThinkPHP的连贯操作方法中field方法

1 ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来. 2 3 1.用于查询 4 在查询操作中field方法是使用最频繁的. 5 6 $Model->field('id,title,content')->select(); 7 这里使用field方法指定了查询的结果集中包含id,title,content三个字段的值.执行的SQL相当于: 8 9 SELECT id,title,content FROM table

Thinkphp 3.2 验证码图片显示错误解决方法

在调用验证码之前加上 ob_clean(); 不显示验证码的代码: public function verify(){ $verify = new \Think\Verify(); $verify->entry(); } 复制代码 修改为: public function verify(){ ob_clean(); $verify = new \Think\Verify(); $verify->entry(); } 复制代码 这样的话,保存再刷新一次,验证码就出现了 分析: 1.ob_clea