php 生成验证码图片不显示问题
清除了bom,代码也是顶行开始写的,gd库也是开启的,从这里来看估计不是gd库的问题了,可能出在程序那句代码上。
生成验证码的代码:
代码如下 | 复制代码 |
<?php
|
感觉是不是没有问题了,后来百度发现一高人说关键是加入了ob_clean,了这个让我想了原因。
解决办法
ob_clean(); //关键代码,防止出现'图像因其本身有错无法显示'的问题。
加到 header 输出之前
代码如下 | 复制代码 |
|
以前模拟post请求俺都用PHP curl扩展实现来着,没想过PHP socket也可以实现。最近翻了下相关资料才发现原来没有那么高深,只是以前一直没有完全理解post的原理和本质而已,其实就是发送给目的程序一个标志为post的协议串如下:
POST /目的程序url HTTP/1.1
Accept: 接收信息格式
Referer: url来路
Accept-Language: 接收语言
Content-Type: application/x-www-form-urlencoded
Cookie: 网站cookie,不用俺过多解释,对吧?
User-Agent: 用户代理,操作系统及版本、CPU 类型、浏览器及版本等信息
Host: 要发送到的主机地址
Content-Length: 发送数据的长度
Pragma: 本地是否存在缓存
Cache-Control: 是否需要网页缓存
Connection: 连接状态
username=fengdingbo&password=111cn.net //post发送的数据
我想大家对表单的post方法提交数据应该是最熟悉不过了,例如我们想把用户名和密码发送给某个页面的时候,填写好相应的input框,点击提交按钮,最后把这个表单发送到action程序的就是以上数据。知道了这一点我想就不难了
这时候我们只需要用php的socket打开一个端口,例如80端口,把以上信息利用这个端口发送给目的程序就行了。
我们如何在一个端口上建立一个socket通道呢?
在PHP中是如此简单呢!
官方给的原型:
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
下边是人类的理解:
fsockopen(主机名称,端口号,错误号的&变量,错误提示的&变量,超时时间)
主机名称就是你需要发送数据的目的地;
端口号就是这个目的程序会在哪个端口等着你的数据;
错误号的&变量,这个是如果建立socket不成功的时候返回的错误编号;
错误提示的&变量,是错误的时候返回的错误提示信息;
超时时间,就是post数据之后如果对方没有回应信息,等待的最长时间。
如果不出意外(你正确的设置fsockopen()函数的参数)的话,一个socket通道现在已经打开了,我们下一步需要做的就是,通过这个打开的通道把post请求协议发给目的程序,这时候可以使用fwrite或者fputs函数中的任意一个,把post的请求格式发给fsockopen()打开的资源句柄,这时候一个伟大的socket模拟的post请求就诞生了。
代码如下 | 复制代码 |
<?php |
实际上,当socket通道打开时,我们传的COOKIE是正确的话,(截图运行的php代码来自上边,运行后返回的网页出现了我的用户名,说明对方网站已经承认我已经登录了)咱就可以干N多事情,比如刷帖,刷回复等,你们懂的,对吧?
好了上面还不够有说服力我们来看一个php socket实现图片上传
这个代码有两点要注意
一是他是http的post 请求;
二是表单上传协议,
下的请求 串适合任何语言.
代码如下 | 复制代码 |
<?php |
php截取中文字符串出现乱码,这是最近发现的事情,先前我曾经写过一篇关于自动生成meta信息的文章
,那篇关于利用php截取文章前多少字作为description方法,但是出现了IE6无法加载CSS的现象,这里
做一个补充。
首先要明确这么一个问题,之所以会出现IE6偶尔无法加载CSS的现象,是因为文件出现了乱码,导致后
面的加载CSS的link无法被IE6正确解析。因此就看到了一个纯HTML页面,没有CSS,赤裸裸!
明确了问题,剩下的问题就好解决了,就是防止乱码,既然万戈所提供的函数出现了乱码,就重新去找
了一个php函数来解决这个乱码的问题。
substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题。
mb_substr()这个函数的用法与substr()相似,只是在最后要加入多一个参数,以设定字符串的编码。
通过这里大几就应该理解我改进万戈方法的原因了~~
下面再介绍几个更高级处理办法
例1
代码如下 | 复制代码 |
function func_chgtitle($str,$len) { //$length我们允许字符串显示的最大长度 } |
例2
字符串编码为UTF-8的,一个中文字符占三个字节:
public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的
起始位置,$len指字符串长度
$strlen = $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符
串的总长度
代码如下 | 复制代码 |
for($i = $start; $i < $strlen;) { 值大于0xa0,则表示汉字 于一个汉字 变量$tmpstr |
调用mt_rand()这个方法可以生成随机数字,参数是范围的最小值和最大值,函数会返回最小值和最大值之间的一个随机数字。
要生成真正的随机数,对于计算来说不是一件容易的事。
php中两种方法可以生成随机数,一个经典的函数叫rand(),另一个更出色的函数是mt_rand()。
例1
代码如下 | 复制代码 |
或者 <?php |
例2
代码如下 | 复制代码 |
srand((double)microtime()*1000000); |
例3
代码如下 | 复制代码 |
/** |
写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
代码如下 | 复制代码 |
$dirs='e:/pdf'; function FileShow($dirs) { $dir=opendir($dirs); while ($f=readdir($dir)) { if($f != '.' && $f != '..'){ $file=$dirs.'/'.$f; if(is_file($file)){ echo 'FileName:'.$file.'<br />'; //echo 'FileName:'.iconv('gb2312','utf-8',$file).'<br />'; }else{ FileShow($file); } } } } FileShow($dirs); |
相关文章
- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
jQuery Real Person验证码插件防止表单自动提交
本文介绍的jQuery插件有点特殊,防自动提交表单的验证工具,就是我们经常用到的验证码工具,先给大家看看效果。效果图如下: 使用说明 需要使用jQuery库文件和Real Person库文件 同时需要自定义验证码显示的CSS样式 使用实例...2015-11-08- 这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
- 通过jquery.cookie.js插件可以快速实现“点击获取验证码后60秒内禁止重新获取(防刷新)”的功能效果图:先到官网(http://plugins.jquery.com/cookie/)下载cookie插件,放到相应文件夹,代码如下:复制代码 代码如下: <!DOCTYPE ht...2015-03-15
- 验证码类文件 CreateImg.class.php <?php class ValidationCode { private $width,$height,$codenum; public $checkcode; //产生的验证码 private $checkimage; //验证码图片 private $disturbColor = ''; /...2015-11-08
- 这篇文章主要介绍了基于JavaScript实现验证码功能的相关资料...2017-04-03
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
这篇文章主要介绍了Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-06-24- 下面小编就为大家带来一篇单击按钮发送验证码,出现倒计时的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 代码...2017-07-06
- 这篇文章主要介绍了解决druid监控页面SQL不显示的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-19
- 验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
- 这篇文章主要介绍了基于Pytorch版yolov5的滑块验证码破解思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-25
- 最近接到新需求,需要实现一个点击发送验证码之后,按钮禁用,在5秒之后取消禁用,看似需求很简单,实现起来还真的好好动动脑筋,下面小编把jquery控制按钮禁用核心代码分享给大家,需要的朋友参考下吧...2021-07-24
- 工信部的ICP备案网站登录时验证码一直输入不正确怎么回事,为了防止一些机器采集人工信部对于查询验证做得识别度极低,所以许多的朋友都会发现输入验证码一直有问题了,那...2016-10-10
- web开发中,经常会使用验证码功能,例如登录、注册,或其他关键功能之前经常会使用。下面通过实例代码给大家介绍Web制作验证码功能实例代码,感兴趣的朋友一起看看吧...2017-06-24
android中ToolBar设置NavigationIcon图标不显示、失败、没反应,绝对管用
ToolBar工具昨天介绍过相关的教程今天我们来看看关于android中ToolBar设置NavigationIcon图标不显示、失败、没反应,绝对管用问题的解决办法。 最近开发android ap...2016-10-02- GoDaddy怎么开启手机验证码登录?最近老听朋友说gd用户盗了,然后域名丢失了,今天 我们一起来看看关于GoDaddy开启手机验证码登录的教程. 给账户添加多重验证是为了账...2016-10-10
- 这篇文章主要为大家详细介绍了vue实现登录验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-13
- 这篇文章主要介绍了python网络爬虫实现发送短信验证码的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
- 这篇文章主要介绍了C#验证码识别基础方法实例分析,较为详细的总结了C#验证码的实现思路及具体步骤,并对实现思路进行了总结归纳,具有很好的实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要为大家详细介绍了JavaScript实现验证码案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-28