PHP生成图片验证码练习笔记

 更新时间:2016年11月25日 16:56  点击:1483
php生成图形验证码需要借助于php gd库与session来实例,这样由gd库生成图片给用户看,再由用户输入验证提交给服务器与session中存储值进行验证,下面我们来看全过程吧。

windows系统GD库开启

将php.ini文件找到extension=php_gd2.dll  去掉前面的;就行了

linux系统GD库开启

##检测GD库是否安装命令
 php5 -m | grep -i gd
 或者
 php -i | grep -i --color gd
##如未安装GD库,则为服务器安装,方法如下
### 如果是源码安装,则加入参数
 --with-gd
### 如果是debian系的linux系统,用apt-get安装,如下
 apt-get install php5-gd
### 如果是CentOS系的系统,用yum安装,如下
 yum install php-gd
### 如果是suse系的linux系统,用yast安装,如下
 yast -i php5_gd

好了,php GD库己经好了下面我们来看php生成图形验证码图片实例

首先还是给大家先介绍一下验证码的简单概念吧!

1 、验证码介绍

验证码是将一串随机产生的数字或符号以图片的形式展现在页面上,由用户肉眼识别其中的验证码信息,在进行提交操作的同时,需将图片上的字符同时提交,输入提交验证成功后才能使用某项功能。如果提交的字符与服务器 session保存的不同,则认为提交信息无效。为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰素或者将字符进行扭曲,增加自动识别难度。用户提交后将用户输入的验证码与会话 sessi on中保存的字符串进行比对, 达到验证的效果。用户提交表单的时候,接收表单的页面检查服务端产生的 sessi on和客户端提交的表单值是否一致,不
一致则不读或写入数据库。会话 sessi on允许在服务器上储存小部分用户信息;这类信息是临时性的,当用户离开网站时会被自动删除。

2、 PHP实现过程
PHP网页文件被当作一般HTML网页文件来处理, 并且在编辑时,可以用编辑 HTML的常规方法来编写。由于PHP在使用时消耗相当少的系统资源, 并且有着开放的源代码, 而且是免费的,如今PHP已经被更多的网站应用,下面是 PHP实现验证码的过程:


(1)生成随机数
定义用来显示在图片上的数字和字母;

循环随机抽取四位定义好的字母和数字;
将通过数字得来的字符连起来一共是四位;
保存生成的数字和字母, 把生成好的随机数放到 sessi on变量中,将来跟用户提交的内容比较。

 代码如下 复制代码
< ? php
$ aut hnum_session = ' ; '
$ st r = a ' bcdef ghij k l mnopqrstuv wxyz 1234567890 '
;
$ l = strlen( $ str) ;
f or( $ i= 1 ; $ i< = 4 ; $ i+ + )
{
$ num= rand( 0 , $ l- 1);
$ aut hnum_session. = $ str[ $ num];$ aut hnum_session. = $ str[ $ num];
}
$ _SESSI ON[ " authnum_ses sion" ] ;
? >


(2) 创建图片
用图片创建函数确定所创建的图片大小。

 代码如下 复制代码
< ? php
$ i m = i magecreate( 60 , 20);
? >


(3)设置颜色
使用函数创建背景色;
使用函数创建字体色。

 代码如下 复制代码

< ? php
$ b lack = ImageColor A ll ocate( $ i m, 0 , 0, 0);
$ white = ImageColor A ll ocate( $ i m, 255 , 255 ,
255);
$ gray = I mageColor A ll ocate ( $ i m , 200 , 200 ,
200);
i magefill ( $ i m , 68 , 30 , $ gray);
$ li = I mageColor A l loca te ( $ i m , 220 , 220 ,
220);
? >


(4)加入干扰素
在不影响用户输入的条件下,加入若干干扰线、
干扰象素。

 代码如下 复制代码
< ? php
f or( $ i= 0 ; $ i< 3 ; $ i+ + )
{
i mageline( $ i m , rand ( 0 , 30), rand( 0 , 21), rand( 20 , 40), rand( 0 , 21), $ li );
}
f or( $ i= 0 ; $ i< 90 ; $ i+ + )
{
i magesetp i xe l ( $ i m, rand( )% 70 , rand( )% 30
, $ gray);
}
? >


(5)把字符写在图像左上角
使用函数 i magestri ng把字符写在图像上。

 代码如下 复制代码
< ? php
i magest ring( $ i m, 5 , 12 , 5 , $ au t hnu m _ ses2
sion , $ wh i te);
? >


(6)输出图像
开启 sessi on功能;
使用函数输出图像。

 代码如下 复制代码

< ? phpH eader( "Content - type : i mage /png" ) ;
sessi on_start ( ) ;
I magePNG( $ i m);
? >

上述验证码显示结果如下

 

在需要调用验证码进行验证的页面当中, 由用户填写验证码表单, 系统将表单提交的验证码数据与上面的 sessi on变量进行比对,若相等表示验证正确,可以继续进行; 不相等则错误, 终止用户正在进行的工作,实现用户使用验证码的验证功能。

无标题文档

 代码如下 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript">
 function refresh_code()
 {
  form1.imgcode.src="verifycode.php?a="+Math.random();
 }
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="checkcode.php">
  <label for="code">验证码:</label>
  <input type="text" name="code" id="textfield" />
  <img id="imgcode" src="VerifyCode.php" alt="验证码" />
  <a href="javascript:refresh_code()">看不清?换一个</a>
  <input type="submit" name="button" id="button" value="提交" />
</form>
</body>
</html>

 

verifycode.php文件代码如下

 

 代码如下 复制代码

<?php
 /*
  图片验证码 Powered By KASON test http://www.111cn.net   */
  session_start();
  $num=4;//验证码个数
  $width=80;//验证码宽度
  $height=20;//验证码高度
  $code=' ';
  for($i=0;$i<$num;$i++)//生成验证码
  {
   switch(rand(0,2))
   {
    case 0:$code[$i]=chr(rand(48,57));break;//数字
    case 1:$code[$i]=chr(rand(65,90));break;//大写字母
    case 2:$code[$i]=chr(rand(97,122));break;//小写字母
   }
  }
  $_SESSION["VerifyCode"]=$code;
  $image=imagecreate($width,$height);
  imagecolorallocate($image,255,255,255);
  for($i=0;$i<80;$i++)//生成干扰像素
  {
   $dis_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
   imagesetpixel($image,rand(1,$width),rand(1,$height),$dis_color);
  }
  for($i=0;$i<$num;$i++)//打印字符到图像
  {
   $char_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
   imagechar($image,60,($width/$num)*$i,rand(0,5),$code[$i],$char_color);
  }
  header("Content-type:image/png");
  imagepng($image);//输出图像到浏览器
  imagedestroy($image);//释放资源
?>  

 

checkcode.php文件如下

 代码如下 复制代码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
ini_set('display_errors', 'Off');
session_start();
  if((strtoupper($_POST["code"])) == strtoupper(($_SESSION["VerifyCode"]))){
 print("验证码正确,");
  }else{
    print("验证码错误,");
  }
  echo "提交的验证码:".strtoupper($_POST["code"]).",正确的验证码:".strtoupper($_SESSION["VerifyCode"]);
?>

文章介绍的PHP文件上传与上传图片加水印例子是分开来写的了,先是介绍文件上传代码,而后介绍了一个上传图片加水印代码,大家可以整理成一个类来方便调用了。

先来看一段简单的文件上传代码

html文件(主要是表单了上传文件的表单了)

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
    <head>
 
        <!-- 此行定义字符集,在使用汉字的国家,字符集通常有 gb2312,utf-8两种字符集,设置不对会导致页面中文乱码
 
                 因为我的编辑器是utf-8的,所以这里我定义字符集为utf-8。如果你的字符集是gb2312可以修改charset值 -->
 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
        <!-- 此行多是IE浏览器不兼容导致的,现在IE6,IE7使用的人数不多了,大多数可以忽略 -->
 
        <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
 
        <!-- 定义文档标题 -->
 
        <title>PHP上传实例</title>
 
        <!-- 加入js脚本,简单的前端判断,防止没有选择上传文件就点击提交 -->
 
        <script type="text/javascript">    
 
            // 当页面加载完后执行里边的函数体
 
              // 因为页面的加载顺序是自上到下,否则你把JS移到页脚也可以
 
            window.onload = function(){
 
                // 给上传按钮添加鼠标单击事件
 
                document.forms[0].elements[1].onclick = function(){
 
                    // 判断要上传的文件名是否为空
 
                    if( document.forms[0].file.value == '' ){
 
                        // 如果是空则弹出警告
 
                        alert('请先选择文件');    
 
                        // 结束脚本运行
 
                        return;
 
                    }
 
 
 
                    // 如果文件不为空则上传文件
 
                    document.forms[0].submit();
 
                }        
 
            }
 
        </script>
 
    </head>
 
    <body>
 
        <!-- 此行是定义form表单区域,上传文件必须用POST方式,还要添加 enctype="multipart/form-data" 属性
 
             action里的值为你要处理上传文件的页面,也可以用url或者相对路径 -->
 
        <form action="upload.php" method="post"  enctype="multipart/form-data">
 
            <!-- 定义选择文件的浏览表单 value属性里值就是显示在按钮上的值 -->
 
            <input type="file" name="file" value="选择要上传的文件" />
 
            <!-- 定义提交到服务器的按钮 value属性里的值就是显示在按钮上的值 -->
 
            <input type="button" value="上传" />
 
        </form>
 
    </body>
 
</html>

php上传处理文件

 代码如下 复制代码
<?php
 
/**
 
 * PHP文件上传处理页面
 
 * 琼台博客
 
 */
 
 
 
// 定义提示函数
 
function alert($msg){
 
    return '<script type="text/javascript">alert("'.$msg.'");window.history.back(-1);</script>';
 
}
 
 
 
// 定义允许的文件类型
 
$allowType = array('image/jpeg','image/gif','image/jpg');
 
 
 
// 定义路径,可以是绝对路径,或者相对路径都可以
 
$filePath  = './uploadFileDir/';
 
 
 
// 接收表单信息 其中里边写的 file 值是 静态页form表单里的name值
 
$file = $_FILES['file'];
 
 
 
// 第一步,判断上传的文件是否有错误
 
if( $file['error'] !== 0 ){
 
    exit(alert('文件上传错误'));
 
}
 
 
 
// 第二步,判断文件大小,这里的102400是字节,换算为kb就是100kb
 
if( $file['size'] > 102400 ){
 
    exit(alert('文件过大'));
 
}
 
 
 
// 第三步,判断文件类型
 
if( !in_array(mime_content_type($file['tmp_name']),$allowType) ){
 
    exit(alert('文件类型错误'));
 
}
 
 
 
// 第四步,判断路径是否存在,如果不存在则创建
 
if( !file_exists($filePath) &&  !mkdir($filePath,0777,true) ){
 
    exit(alert('创建目录错误'));
 
}
 
 
 
// 第五步,定义上传后的名字及路径
 
$filename = time().'_'.$file['name'];
 
 
 
// 第六步,复制文件
 
if( !copy($file['tmp_name'],$filePath.$filename) ){
 
    exit(alert('上传文件出错,请稍候重试'));
 
}
 
 
 
// 第七步,删除临时文件
 
unlink($file['tmp_name']);
 
 
 
// 提示上传成功
 
echo alert('恭喜,上传文件['.$filename.']成功!');
 


  
注意:如果你在上传中还带有其它单表字段名我们需要获取需要利用post接受才可以哦,否则你可能接受不到值。

完成以上步骤以后,你就可以给你上传的图片添加水印了。以下是我写的一个小DEMO
水印类

 代码如下 复制代码

<?php
/**
 * 加水印类
 * 琼台博客
 */
 
class water{
 
    private $imgPath; // 图片路径
     
    public function __construct($imgPath="./"){
        $this->imgPath = rtrim($imgPath,"/")."/";
    }
 
    // 写水印动作
    public function waterInfo($ground,$water,$pos=0,$prefix="lee_",$tm=50){
        $allPathGround  = $this->imgPath.$ground;
        $allPathWater   = $this->imgPath.$water;
        $groundInfo = $this->imgInfo($allPathGround);   
        $waterInfo  = $this->imgInfo($allPathWater);
 
        //判断水印图片是否比原图大
        if(!$newPos=$this->imgPos($groundInfo,$waterInfo,$pos)){
            echo "您的水印图片比原图大哦";    
            return false;
        }
         
        //打开资源
        $groundRes=$this->imgRes($allPathGround,$groundInfo['mime']);
        $waterRes=$this->imgRes($allPathWater,$waterInfo['mime']);
 
        //整合资源
        $newGround=$this->imgCopy($groundRes,$waterRes,$newPos,$waterInfo,$tm);
 
        //保存资源
        $this->saveImg($newGround,$ground,$groundInfo['mime'],$prefix);
 
    }
 
    private function saveImg($img,$ground,$info,$prefix){
        $path=$this->imgPath.$prefix.$ground;
        switch($info){
            case "image/jpg":  
            case "image/jpeg":
            case "image/pjpeg":
                imagejpeg($img,$path);
                break;
            case "image/gif":
                imagegif($img,$path);
                break;
            case "image/png":
                imagepng($img,$path);
                break;
            default:
                imagegd2($img,$path);  
        }  
    }
 
    private function imgCopy($ground,$water,$pos,$waterInfo,$tm){  
        imagecopymerge($ground,$water,$pos[0],$pos[1],0,0,$waterInfo[0],$waterInfo[1],$tm);
            return $ground;
    }
 
    private function imgRes($img,$imgType){
        switch($imgType){
            case "image/jpg":  
            case "image/jpeg":
            case "image/pjpeg":
                $res=imagecreatefromjpeg($img);
                break;
            case "image/gif":
                $res=imagecreatefromgif($img);
                break;
            case "image/png":
                $res=imagecreatefrompng($img);
                break;
            case "image/wbmp":
                $res=imagecreatefromwbmp($img);
                break;
            default:
                $res=imagecreatefromgd2($img);
        }  
        return $res;
    }
 
    // 位置为
    // 1 左上 2中上 3右上
    // 4 左中 5中中 6右中
    // 7 左下 8中下 9右下
    // 0 随机位置
    private function imgPos($ground,$water,$pos){
        if($ground[0]<$water[0] || $ground[1]<$water[1])  //判断水印与原图比较 如果水印的高或者宽比原图小 将返回假
            return false;
        switch($pos){
            case 1:
                $x=0;
                $y=0;
                break;
            case 2:
                $x=ceil(($ground[0]-$water[0])/2);
                $y=0;
                break;
            case 3:
                $x=$ground[0]-$water[0];
                $y=0;
                break;
            case 4:
                $x=0;
                $y=ceil(($ground[1]-$water[1])/2);
                break;
            case 5:
                $x=ceil(($ground[0]-$water[0])/2);
                $y=ceil(($ground[1]-$water[1])/2);
                break;
            case 6:
                $x=$ground[0]-$water[0];
                $y=ceil(($ground[1]-$water[1])/2);
                break;
            case 7:
                $x=0;
                $y=$ground[1]-$water[1];
                break;
            case 8:
                $x=ceil($ground[0]-$water[0]/2);
                $y=$ground[1]-$water[1];
                break;
            case 9:
                $x=$ground[0]-$water[0];
                $y=$ground[1]-$water[1];
                break;
            case 0:
            default:
                $x=rand(0,$ground[0]-$water[0]);
                $y=rand(0,$ground[1]-$water[1]);
        }
        $xy[]=$x;
        $xy[]=$y;
        return $xy;
    }
 
    // 获取图片信息的函数
    private function imgInfo($img){
        return getimagesize($img); 
    }
}
?>  

用法很简单,我们介绍一下原理吧,我们只要创建一个water类就可以了,非常的简单。

例子

 代码如下 复制代码

if( !copy($file['tmp_name'],$filePath.$filename) ){
 
    exit(alert('上传文件出错,请稍候重试'));
 
}

如果文件上传成功之后我们可以如下

 代码如下 复制代码

$wt = new sater();
$water ='a.gif'; //水印图片
$wt->waterInfo($filePath.$filename,$water) //其它默认就可以了。

本文章来给大家介绍一篇关于php 给图片加灰色透明效果,希望此方法对各位同学会有所帮助哦。

原理:

1.首先计算出原图片的尺寸
2.创建相同尺寸的半透明图片
3.使用 imagecopy()方法,把新创建的半透明图片与原图合并

 代码如下 复制代码

<?php
/*php 给图片加灰色透明效果*/
$imfile = './0.jpg';//原图
$origim = imagecreatefromjpeg($imfile);//从 JPEG 文件或 URL 新建一图像
 
$w=imagesx($origim);//原图宽度
$h=imagesy($origim);//原图高度
 
$newimg = imagecreatetruecolor($w, $h);//返回一个图像标识符,代表了一幅大小为    x_size 和 y_size 的黑色图像。imagecreatetruecolor//     
 
$color=imagecolorallocatealpha($newimg,0,0,0,75);//为一幅图像分配颜色 + alpha; 和 imagecolorallocate() 相同,但多了一个额外的透明度参数 alpha,其值从 0 到 127。0 表示完全不透明,127 表示完全透明。 
 
imagecolortransparent($newimg,$color);//将某个颜色定义为透明色
 
imagefill($newimg,0,0,$color);//区域填充;resource $image , int $x , int $y , int $color 
 
imagecopy($origim,$newimg, 0,0, 0, 0,$w, $h);//拷贝图像的一部分;将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。
 
imagejpeg($origim, './2.jpg');//输出图象到浏览器或文件。;resource $image [, string $filename [, int $quality ]]
?>

利用php截屏或实现网页快照我们需要用一个工具:xvfb and wkhtmltoimagek哦,这个工具目前只能在linux系统中使用,下面有兴趣的朋友可进入参考。

在做旅游攻略时,需要把攻略页面生成PDF和Jpg图片,PDF生成用的是《MPDF把Html生成PDF》,而HTML生成Jpg又卡壳了。前期打算以纯程式的生成,但是除了调用别的网站提供的远程API生成Jpg,不然以单纯的程式(GD库和内置函数,或封装的类)都没找到完美的解决。

不得已,安装扩展wkhtmltoimage生成。

安装步骤如下:

1、服务器端下载安装wkhtmltoimage,32和64位有区别,心情天空安装的是centos 5.8 32位。但是下载了 wkhtmltoimage 0.11版本但是出现以下错误,

Pixmap: Cannot create a QPixmap when no GUI is being used
QPixmap: Cannot create a QPixmap when no GUI is being used
QPixmap: Cannot create a QPixmap when no GUI is being used
QPixmap: Cannot create a QPixmap when no GUI is being used
QPixmap: Cannot create a QPixmap when no GUI is being used
QPixmap: Cannot create a QPixmap when no GUI is being used最后心情天空安装wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2低版本才可以正常生成。


32位
wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2
tar jxf wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2
cp wkhtmltoimage-i386 /usr/local/bin/wkhtmltoimage
 
64位
wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2
mv wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2 wkhtmltoimage-0.10.0_rc2-static-amd64.tar
tar -xvf wkhtmltoimage-0.10.0_rc2-static-amd64.tar
mv wkhtmltoimage-amd64 /usr/bin/wkhtmltoimage
就这样,安装成功,可以测试 wkhtmltoimage http://www.111cn.net/ screenshot.png

2、php执行wkhtmltoimage 生成图片

 代码如下 复制代码

set_time_limit(0);
shell_exec('/usr/local/bin/wkhtmltoimage http://www.111cn.net/ /usr/local/wwwroot/111cn.net/5eyi.jpg');

假若用foreach批量生成的话建议,sleep(10),每次生成后停顿几秒。

[!--infotagslink--]

相关文章

  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • JS实现随机生成验证码

    这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • jQuery Real Person验证码插件防止表单自动提交

    本文介绍的jQuery插件有点特殊,防自动提交表单的验证工具,就是我们经常用到的验证码工具,先给大家看看效果。效果图如下: 使用说明 需要使用jQuery库文件和Real Person库文件 同时需要自定义验证码显示的CSS样式 使用实例...2015-11-08
  • php实现点击可刷新验证码

    验证码类文件 CreateImg.class.php <&#63;php class ValidationCode { private $width,$height,$codenum; public $checkcode; //产生的验证码 private $checkimage; //验证码图片 private $disturbColor = ''; /...2015-11-08
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • Smarty模板学习笔记之Smarty简介

    1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
  • Jquery插件实现点击获取验证码后60秒内禁止重新获取

    通过jquery.cookie.js插件可以快速实现“点击获取验证码后60秒内禁止重新获取(防刷新)”的功能效果图:先到官网(http://plugins.jquery.com/cookie/)下载cookie插件,放到相应文件夹,代码如下:复制代码 代码如下: <!DOCTYPE ht...2015-03-15
  • 基于JavaScript实现验证码功能

    这篇文章主要介绍了基于JavaScript实现验证码功能的相关资料...2017-04-03
  • 单击按钮发送验证码,出现倒计时的简单实例

    下面小编就为大家带来一篇单击按钮发送验证码,出现倒计时的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 代码...2017-07-06
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • 基于Pytorch版yolov5的滑块验证码破解思路详解

    这篇文章主要介绍了基于Pytorch版yolov5的滑块验证码破解思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-25
  • Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法

    这篇文章主要介绍了Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-06-24
  • php Observer观察者模式之学习笔记

    当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
  • 工信部的ICP备案网站登录时验证码一直输入不正确怎么回事

    工信部的ICP备案网站登录时验证码一直输入不正确怎么回事,为了防止一些机器采集人工信部对于查询验证做得识别度极低,所以许多的朋友都会发现输入验证码一直有问题了,那...2016-10-10
  • jQuery实现发送验证码控制按钮禁用功能

    最近接到新需求,需要实现一个点击发送验证码之后,按钮禁用,在5秒之后取消禁用,看似需求很简单,实现起来还真的好好动动脑筋,下面小编把jquery控制按钮禁用核心代码分享给大家,需要的朋友参考下吧...2021-07-24
  • PHP 日期函数 学习笔记介绍

    举一个简单的date例子 我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。 代码如下 复制代码 <!DOCTY...2016-11-25
  • GoDaddy怎么开启手机验证码登录?

    GoDaddy怎么开启手机验证码登录?最近老听朋友说gd用户盗了,然后域名丢失了,今天 我们一起来看看关于GoDaddy开启手机验证码登录的教程. 给账户添加多重验证是为了账...2016-10-10
  • Web制作验证码功能实例代码

    web开发中,经常会使用验证码功能,例如登录、注册,或其他关键功能之前经常会使用。下面通过实例代码给大家介绍Web制作验证码功能实例代码,感兴趣的朋友一起看看吧...2017-06-24
  • PHP批量生成图片缩略图(1/5)

    这款批量生成缩略图代码可以生成指定大小的小图哦,并且支持文件批量上传。 这款教程会用到php文件 view.php config.php funs.php index.php 功能: -------...2016-11-25
  • python网络爬虫实现发送短信验证码的方法

    这篇文章主要介绍了python网络爬虫实现发送短信验证码的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25