首页 > 开发 > PHP > 正文

ThinkPHP打开验证码页面显示乱码的解决方法

2024-05-04 23:29:06
字体:
来源:转载
供稿:网友
这篇文章主要介绍了ThinkPHP打开验证码页面显示乱码的解决方法,通过头部添加自定义文件验证目录并过滤BOM头来实现该功能,非常具有实用价值,需要的朋友可以参考下
 
 

本文实例讲述了ThinkPHP打开验证码页面显示乱码的解决方法。分享给大家供大家参考。具体分析如下:

在用thinkphp开发的时候,有时会出现验证码乱码的问题,解决方法是把如下这个文件放在根目录,访问后就可以解决了,具体的PHP代码如下:

复制代码代码如下:
<?php
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);   
}   
?>

 

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表