为了账号安全,请及时绑定邮箱和手机立即绑定

PHP实现验证码制作

难度初级
时长 1小时20分
学习人数
综合评分9.80
173人评价 查看评价
10.0 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • http://img1.sycdn.imooc.com//645fa0e200018a3308280372.jpg

    随即中文验证码

    查看全部
  • 动态校验

    http://img1.sycdn.imooc.com//645f9f7a0001d00d07870156.jpg

    查看全部
  • 实现字母和数字混合验证码

    for 循环,字典由字母与数字组成。

    http://img1.sycdn.imooc.com//645f9be00001df7707120289.jpg

    查看全部
  • imagesetpixel画一个随机的像素。

    imagesetpixel(resource $iamge,int $x,int $y,int color)

    imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $color)画一条线端。

    查看全部
  • 实现数字验证码

    在底图上显示随机数字

    for循环

    变色验证码

    随机的点——干扰元素



    实现数字验证码

    在底图上显示随机数字

    for循环

    变色验证码

    随机的点——干扰元素

    查看全部
  • 搭建php运行环境,搜索XAMPP下载安装。

    打开xampp文件地址,在站点文件夹htdots下,新建一个php文件。输入简单的内容判断是否能正常运行。

    检查php是否支持GD,输入<?php  phpinfo():查看输出即可。

    实现简单的验证码

    在htdots站点下,打开project目录创建php文件;

    生成底图:图像绘制imagecreatetruecolor(int $width,int $height) 。

    header方法输出图片的类型;

    imagecreatetruecolor(int $width,int $height) 。默认返回黑色底图。

    imagecolorallocate($image,int red,int green,int blue)为图像分配颜色。

    9.imagefill($image,int x,int y,int color)区域填充,在iamge图像的坐标x,y(图像左上角为(0,0)处用color颜色执行区域填充;

    查看全部
  • <?php

    //phpinfo();

    //生成验证码底图

    $image=@imagecreatetruecolor(100, 30);//返回一个黑色的图片

    $text_color = imagecolorallocate($image, 255, 255, 255);

    // $bgcolor=imagecolorallocate($image,255,255,255);

    // imagefill($image,0,0,$bgcolor);

    // header('content-type: image/png');

    // imagedestroy($image);

    imagefill($image,0,0,$text_color);//区域填充

    for($i=0;$i<4;$i++)//利用for循环生成四位数字

    {

        $fontsize=6;//字体大小

        $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//设置数字的颜色

        $fontcontent=rand(0,9);

        //注意事项:控制好字体的大小和分布,避免字体重叠或显示不全

        $x=($i*100/4)+rand(5,10);

        $y=rand(5,10);

        imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);

    }

    for($i=0;$i<200;$i++)

    {

        $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));

        //生成随机点干扰颜色(较浅),给恶意破解程序增加难度

        imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor);

    }

    header ('Content-Type: image/png');

    imagepng($image);

    imagedestroy($image);

    查看全部
  • <?php

    //phpinfo();

    //生成验证码底图

    $image=@imagecreatetruecolor(120, 20);//返回一个黑色的图片

    $text_color = imagecolorallocate($image, 255, 255, 255);

    // $bgcolor=imagecolorallocate($image,255,255,255);

    // imagefill($image,0,0,$bgcolor);

    // header('content-type: image/png');

    // imagedestroy($image);

    imagefill($image,0,0,$text_color);//区域填充


    header ('Content-Type: image/png');

    imagepng($image);

    imagedestroy($image);

    查看全部
  • 文字无法显示

    查看全部
  • 输出一个随机数。 有的浏览器会对相同url做cache,若cache了,这个请求就达不到我们效果。所以加个随机数,避免被浏览器cache。


    有的浏览器不够聪明,会cache历史数据,导致刷新失败。 加随机数是这个作用。

    查看全部
  • http://www.imooc.com/qadetail/25142

    查看全部
  • https://bbs.csdn.net/topics/390932524

    为什么验证码 必须要开启 ob_clean 才可以显示?

    这表示你的程序前面有输出,<?php 前有空格、空行、文件有BOM头

    查看全部
  • 啦啦啦啦
    查看全部
    0 采集 收起 来源:验证码介绍

    2019-03-20

  • SESSION 存储验证信息

    查看全部
  • 实现简单的验证码


    查看全部
  • captcha.php

    <?php

    session_start();


    //画布

    $image = imagecreatetruecolor(100, 30);

    $bgcolor = imagecolorallocate($image, 255, 255, 255);

    imagefill($image, 0, 0, $bgcolor);


    //随机数字

    /*

    for ($i=0; $i < 4; $i++) {

    $fontsize = 10;

    $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));

    $fontcontent = rand(0,9);


    $x = ($i*100/4) + rand(5,10);

    $y = rand(5,10);


    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);

    }

    */


    $captch_code = '';

    //数字字母组合

    for ($i=0; $i <4; $i++) {

    $fontsize = 8;

    $fontcolor = imagecolorallocate($image, rand(0,80), rand(0,80), rand(0,80));


    $data = 'abcdefghijkmnpqrstuvwxy3456789';

    $fontcontent = substr($data, rand(0,strlen($data)),1);

    $captch_code .= $fontcontent;


    $x = ($i*100/4) + rand(5,10);

    $y = rand(5,10);


    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);


    }

    $_SESSION['authcode'] = $captch_code;

    //将captch_code保存到session的authcode中


    //干扰点

    for ($i=0; $i <300 ; $i++) {

    $pointcolor = imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220));

    imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);

    }

    //干扰线

    for ($i=0; $i <3 ; $i++) {

    $linecolor = imagecolorallocate($image, rand(120,220), rand(120,220), rand(120,220));

    imageline($image, rand(1,99), rand(1,29), rand(1,99), rand(1,29), $linecolor);

    # code...

    }


    header('content-type: image/png');

    imagepng( $image );


    //end

    imagedestroy( $image );


    ?>


    查看全部
  • form.php

    <?php

    header('content-type:text/html;charset=utf-8');

    if(isset($_REQUEST['authcode'])){

    session_start();

    if(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){

    echo '<font color="#0000CC">输入正确</font>';

    }else{

    echo '<font color="#CC0000"> <b>输入错误</b> </font>';

    }

    exit();

    }

    ?>


    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="utf-8" />

    <title>确认验证码</title>

    </head>

    <body>

    <form method="post" action="./form.php">

    <p>验证码图片:<img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand();?>" width:100px; height:30px" />

    <a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?</a>

    <p>请输入图片中的内容:<input type="text" name="authcode" value="" /></p>

    <p><input type="submit" value="提交" ></p>

    </form>

    </body>

    </html>


    查看全部
  • 验证码
    查看全部
    0 采集 收起 来源:验证码介绍

    2018-06-16

  • “写请求的消耗远大于读请求”

    查看全部
    0 采集 收起 来源:验证码介绍

    2018-05-11

  • <?php

    session_start();

    $captcha_code='';

    for($i=0;$i<4;$i++){

    $data='abcdefghigkmnpqrstuvwxy13456789';

    $fontcontent=substr($data,rand(0,strlen($data)-1),1);

            

    $captcha_code.=$fontcontent;

    }

    $_SESSION['authcode']=$captcha_code;

    echo $_SESSION['authcode'];

    //证明session是开着的


    /*  $str = '1';

    $str .= '2';

    $str .= '3';

    $str .='4';

    echo $str; 拼接规则的实验*/


    ?> 


    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
本课程适合PHP初学者或者自学的童鞋们。
老师告诉你能学到什么?
1、如何拆解验证码项目 2、PHP的绘图扩展GD库的使用 3、如何用GD函数画图与验证码内容 4、如何用PHP做验证码校验,及动态校验 5、怎么实现中文、图片、视频验证码

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!