`

完美解决TP验证码不显示

阅读更多

【前言】

      刚刚遇到的,看到别人的操作可以正常显示,但我的只显示黑屏。。。

     后面查询到原因,图片输出前不能有任何输出

 

【主体】

方法解决如下:

不显示验证码代码:

 

public function verify(){  
                $verify = new \Think\Verify();  
                $verify->entry();  
        } 

 

 

方案:加入 ob_clean()

 

public function verify(){  
                ob_clean();  
                $verify = new \Think\Verify();  
                $verify->entry();  
        }  

 再刷新一次页面,就可以显示了。

 

 

原因解析:

      可能有以下几种情况

1、先确保是否开启了 gd库

2、页面是否存在bom头

3、导入的ORG.Util.Image是否存在

4、入口文件中是否有define(‘APP_DEBUG’, TRUE); //是否开启调试模式,上线时请改为false

     

这里分析后是第二种,存在Bom头。这里分享下什么是Bom头

什么是Bom头 

BOM: Byte Order Mark 
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行,

如果您在修改任何PHP文件後发生:

* 不能登入或者不能登出; * 页顶出现一条空白; * 页顶出现错误警告; * 其它不正常的情况。

则多半是编辑器的问题。

本程序采用UTF-8编码。现在几乎所有的文本编辑软件都可以显示并编辑UTF-8编码的文件。但是很遗憾,其中很多软件的表现并不理想。

类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。

PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!

最大的麻烦还不是这个。受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。

因此,在编辑、更改任何文本文件时,请务必使用不会乱加BOM的编辑器。Linux下的编辑器应该都没有这个问题。WINDOWS下,请勿使用记事本等编辑器。推荐的编辑器是: Editplus 2.12版本以上; EmEditor; UltraEdit(需要取消‘添加BOM’的相关选项); Dreamweaver(需要取消‘添加BOM’的相关选项) 等。

对于已经添加了BOM的文件,要取消的话,可以用以上编辑器另存一次。(Editplus需要先另存为gb,再另存为UTF-8。) ,以下是程序解决方案:

 

 

1.直接使用本博客的去BOM简单方法

2. 使用ultraedit去除bom头办法 : 打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了

 

 

 

 

 

.

分享到:
评论

相关推荐

    tp3.2验证码不显示删除bom

    tp3.2验证码不显示删除bom,专治验证码各种不显示,前提是开启GD库

    TP5验证码实例

    在本文中,我们将深入探讨如何在ThinkPHP5(简称TP5)框架中实现验证码功能,这是一个常见的用于防止机器人和自动程序滥用网站表单的技术。TP5验证码实例涉及到的主要知识点包括:验证码的生成、验证以及如何在PHP类...

    tp3.2邮箱发送验证码

    在TP3.2框架中实现邮箱发送验证码,主要涉及以下几个步骤: 1. **生成验证码**:可以使用PHP内置的`imagecreate`等GD库函数生成图像验证码,或者使用第三方库如`Geetest`、`Captcha`等。生成的验证码需要存储到...

    TP5 验证码

    在实际项目中,ThinkPHP5的验证码功能是一个必不可少的安全工具,为开发者提供了方便而强大的验证码解决方案。 综上所述,"TP5验证码"涉及到的主要知识点包括:ThinkPHP5框架、验证码的生成与验证、PHP图形处理库的...

    完美解决thinkphp验证码出错无法显示的方法

    本文实例讲述了完美解决thinkphp验证码出错无法显示的方法。分享给大家供大家参考。具体分析如下: 今天做到验证码这一块,想到tp自带验证图片,大喜,但鼓捣半天不出来,一直是个小 X的样子. 官方提示如下: 如果无法...

    西门子TP1200触摸屏不能显示汉字和摄氏度符号,中文字符显示异常的处理对策.docx

    总的来说,解决西门子TP1200触摸屏中文字符显示异常的问题,需要从字体设置、系统编码、固件更新等多个角度进行排查和调整。在处理这类问题时,耐心和细心是必不可少的,同时保持与西门子官方技术支持的沟通也能获得...

    thinkphp5 验证码类库

    think-captcha thinkphp5 验证码类库 ...使用TP5的内置验证功能即可 $this->validate($data,[ 'captcha|验证码'=>'require|captcha' ]); 或者手动验证 if(!captcha_check($captcha)){ //验证失败 };

    西门子TP1200触摸屏U盘导出的数据在EXCEL中无法分列显示的解决办法.docx

    然而,在实际操作中,有时会遇到一个常见问题,即从TP1200导出的数据在Excel中无法正确地分列显示,这通常与数据分隔符的不匹配有关。 当西门子TP1200触摸屏通过U盘导出数据时,它使用特定的分隔符(如分号或逗号)...

    thinkPHP3.1验证码的简单实现方法

    - 如果验证码图片不显示,检查是否正确使用了`ob_clean()`,以清除可能存在的输出缓冲。 - 若验证码显示为乱码,可能是因为PHP代码的位置不当,确保它在一个独立的方法中执行,而不是在其他方法内部。 此外,了解...

    TP900通讯工具_TP900驱动_tp通讯工具_TP900_

    【TP900通讯工具】是一款专为TP900设备设计的专业驱动程序和集成界面软件,旨在提供高效、便捷的通信解决方案。该工具能够帮助用户实现与TP900设备之间的稳定数据交换,适用于各种应用场景,如工业自动化、物联网...

    thinkphp5 验证码类库.zip

    think-captcha ... 使用TP5的内置验证功能即可 $this->validate($data,[ 'captcha|验证码'=>'require|captcha' ]); 或者手动验证 if(!captcha_check($captcha)){ //验证失败 };

    tp传到linux打不开的解决办法

    tp传到linux打不开的解决办法tp传到linux打不开的解决办法tp传到linux打不开的解决办法tp传到linux打不开的解决办法tp传到linux打不开的解决办法tp传到linux打不开的解决办法tp传到linux打不开的解决办法tp传到linux...

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

    在使用ThinkPHP框架进行Web应用开发时,可能会遇到验证码页面显示乱码的问题。这通常是由于文件编码不正确或存在BOM(Byte Order Mark)头导致的。BOM是UTF-8编码的一种特殊标记,虽然在大多数情况下是透明的,但...

    TIA博途中触摸屏TP1200更换为TP900时,画面超出界面的处理办法.docx

    TP1200和TP900的屏幕尺寸和分辨率可能不同,因此原本设计用于TP1200的画面在较小的TP900上显示时,可能会超出屏幕边界。为了解决这个问题,我们需要对HMI画面进行适配。 在博途软件中,我们可以利用“选项”菜单...

    thinkphp验证码的使用

    这篇博客文章《thinkphp验证码的使用》详细介绍了如何在ThinkPHP框架中实现验证码功能。 首先,验证码的生成通常涉及到图像处理技术。ThinkPHP框架内建了验证码类库,允许开发者轻松创建图形验证码。这个类库提供了...

    过tp驱动.zip_TP_TP保护_tp驱动_过TP保护_过tp

    有时,用户可能会遇到触摸板反应不灵敏、无法识别手势或者误触频繁等问题,这时可以通过更新或重新安装TP驱动来解决。"过tp驱动.e"文件可能是某个特定版本的过TP驱动程序,用于更新或恢复原有的驱动。 安装或更新TP...

    tp5动态读取mysql数据在echarts显示

    标题中的"tp5动态读取mysql数据在echarts显示"是指使用ThinkPHP5框架与ECharts图表库结合,实现从MySQL数据库中动态获取温湿度、烟雾浓度等时间序列数据,并将其可视化展示为折线图的过程。这个过程涉及到前端与后端...

    tp5 + 迈信短信平台实现发送短信验证码

    主要是通过thinkphp 5 对接迈信短信平台进行验证码的发送,相对阿里那些大平台来说,这个对接起来更简单,直接调用一个方法就能实现

    一款LED显示驱动芯片TPIC6B273资料.pdf

    TPIC6B273是美国T1公司推出的一款LED显示驱动芯片,具有8通道的D型触发器锁存功能以及功率输出。这款器件可以将8位数据进行锁存,并控制驱动输出,适用于需要相对较高负载功率的系统。TPIC6B273驱动芯片特别设计为...

    Tp-link322g+USB无线网卡 在win7系统下不兼容问题的解决

    折腾了两天,下载了包括驱动之家在内很多网站上的驱动包,但都不能用。...今天上午总算解决了这个问题。网上搜驱动包时,看到很多朋友也遇到了同样的问题,所以发上来分享一下。 附件的压缩包里有详细的安装说明。

Global site tag (gtag.js) - Google Analytics