php实现自动生成验证码的方法:【session_start(); $width = 150; $height = 40; $image = imagecreatetruecolor($width, $height);$bgcol...】。
本文操作环境:windows10系统、php 7、thinkpad t480电脑。
现在验证码在表单中的应用越来越多了,但是如果用js来实现总觉得不太方便,因此使用php来实现下,在此记录下。
当然,我们也可以封装成一个函数,以后使用的时候也是很方便的,这里并未封装,感兴趣的小伙伴可以自己封装下。
具体实现代码:
新建一个cap_sz.php文件:
<?php session_start(); //设置session,一定要在顶部 $width = 150; //设置图片宽为300像素 $height = 40; //设置图片高为40像素 $image = imagecreatetruecolor($width, $height); //设置验证码大小的函数 $bgcolor = imagecolorallocate($image, 255, 255, 255); //验证码颜色RGB为(255,255,255)#ffffff imagefill($image, 0, 0, $bgcolor); //区域填充 $cap_code = ""; for($i=0;$i<4;$i++){ $fontsize = 7; //设置字体大小 $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); //数字越大,颜色越浅,这里是深颜色0-120 $fontcontent = rand(0,9); $cap_code.=$fontcontent; //.=连续定义变量 $x = ($i*150/4)+rand(5,10); $y = rand(5,10); //设置坐标 imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } $_SESSION['code'] = $cap_code; //存到session //设置干扰元素,设置雪花点 for($i=0;$i<300;$i++){ $inputcolor = imagecolorallocate($image, rand(50,200), rand(20,200), rand(50,200)); //设置颜色,20-200颜色比数字浅,不干扰阅读 imagesetpixel($image, rand(1,149), rand(1,39), $inputcolor); //画一个单一像素的元素 } //增加干扰元素,设置横线(先设置线的颜色,在设置横线) for ($i=0;$i<4;$i++) { $linecolor = imagecolorallocate($image, rand(20,220), rand(20,220),rand(20,220)); //设置线的颜色 imageline($image, rand(1,149), rand(1,39), rand(1,299), rand(1,149), $linecolor); } //因为有些浏览器,访问的content-type会是文本型(乱码),所以我们需要设置成图片的格式类型 header('Content-Type:image/png'); imagepng($image); //建立png函数 imagedestroy($image); //结束图形函数,消除$image
然后新建一个index.php进行验证
<?php header("Content-Type: text/html;charset=utf-8"); if (isset($_REQUEST['code'])){ session_start(); if ($_REQUEST['code'] == $_SESSION['code']){ echo "输入正确"; }else{ echo "输入错误,请重新输入"; } exit(); } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //这里不能少,不然乱码 <title>验证码测试</title> </head> <body> <form> <p>验证码:<img src="cap_sz.php" onClick="this.src='cap_sz.php?nocache='+Math.random()" style="cursor:hand" alt="点击换一张"/>点击图片可更换验证码</p> <p>请输入图片中的内容:<input type="text" name="code" value=""/></p> <p><input type="submit" width="20px" height=19px value="提交"></input></p> </form> </body> </html>
推荐学习:php培训
以上是php如何实现自动生成验证码的详细内容。更多信息请关注PHP中文网其他相关文章!

本文比较了酸和基本数据库模型,详细介绍了它们的特征和适当的用例。酸优先确定数据完整性和一致性,适合财务和电子商务应用程序,而基础则侧重于可用性和

本文讨论了确保PHP文件上传的确保,以防止诸如代码注入之类的漏洞。它专注于文件类型验证,安全存储和错误处理以增强应用程序安全性。

本文讨论了在PHP中实施API速率限制的策略,包括诸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之类的库。它还涵盖监视,动态调整速率限制和手

本文讨论了使用password_hash和pyspasswify在PHP中使用密码的好处。主要论点是,这些功能通过自动盐,强大的哈希算法和SECH来增强密码保护

本文讨论了OWASP在PHP和缓解策略中的十大漏洞。关键问题包括注射,验证损坏和XSS,并提供用于监视和保护PHP应用程序的推荐工具。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Atom编辑器mac版下载
最流行的的开源编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!