验证码生成并保存到session

<?php
//开始session
session_start();
//画布大小
$image = imagecreate(100, 40);
$color = imagecolorallocate($image, 255, 255, 255);
// imagefill($image,0, 0, $color); //创建验证码
$code = '';
for($i=0;$i<4;$i++){
$fontsize = 9;
$fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
$x = $i * 25 + 10;
$y = rand(5,10);
$num = (string)rand(0,9);
$code .= $num;
imagestring($image, $fontsize, $x, $y, $num, $fontcolor);
}
//验证码记录到session
$_SESSION['code'] = $code; //增加干扰元素点
for ($i=0; $i <800 ; $i++) {
$color = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
imagesetpixel($image, rand(0,100), rand(0,40), $color);
} //增加干扰线
for ($i=0; $i <5 ; $i++) {
$color = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
imageline($image, rand(10,180), rand(10,180), rand(10,180), rand(10,180), $color);
}
//说明这个是一个图片
header("content-type:image/png");
//输出到浏览器
imagepng($image);
//关闭
imagedestroy($image);

html文件

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<div><img src="yzimg.php" width="100" height="40" id="yzimg" onclick="huan()"></div>
<div><input type="text" id="yzm"></input></div>
<button id="btn">提交</button>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
function huan(){
var num = Math.random() * 10;
document.getElementById('yzimg').src = 'yzimg.php?r=' + num;
}
$('#btn').click(function(){
$.post(
'/yzm/yz.php',
{'yzm':$('#yzm').val()},
function(data){
if (data == 0) {
alert('YES');
} else {
alert('NO');
huan();
}
}
)
})
</script>
</body>
</html>

验证验证码文件

<?php
//必须开启session
session_start();
if ($_POST['yzm'] != $_SESSION['code']) {
# code...
echo 1;
} else {
echo 0;
}
?>

PHP之路——验证码实现的更多相关文章

  1. Python之路(第十三篇)time模块、random模块、string模块、验证码练习

    一.time模块 三种时间表示 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) : 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.(从 ...

  2. Django之路 - 实现登录随机验证码

    登录验证码是每个网站登录时的基本标配,网上也有很多相应的文章, 但是从生成验证码到 应用到自己的网站上的全步骤,并没有看到很多, 为了节约大家的时间,我把整体步骤写下来, 即拿即用哈 1. 生成随机验 ...

  3. python爬虫成长之路(一):抓取证券之星的股票数据

    获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...

  4. CodeIgniter(CI)框架中的验证码

    在CodeIgniter框架中,CI本身自带了验证码,但是查看文档的时候,发现: 需要新建一个表,用来存储验证码信息.因为习惯了session存储验证码信息,所以我把我认为比较好看的验证码应用在了CI ...

  5. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

  6. .NET使用一般处理程序生成验证码

    运行的效果图: HTML的代码: <head> <script type="text/javascript"> function changeCode() ...

  7. Python之路【第十九篇】:爬虫

    Python之路[第十九篇]:爬虫   网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...

  8. aehyok.com的成长之路三——框架结构

    前言 首先奉上个人网站地址传送门:aehyok.com. aehyok.com的成长之路一——开篇 中主要阐述了自己为什么建立自己的网站,以及个人网站的大致方向. aehyok.com的成长之路二—— ...

  9. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

随机推荐

  1. poj 4618 暴力

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4618 #include <cstdio> #include <cmath> # ...

  2. Count the string - HDU 3336(next+dp)

    题目大意:给你一个串求出来这个串所有的前缀串并且与前缀串相等的数量,比如: ababa 前缀串{"a", "ab", "aba", &quo ...

  3. bzoj2631: tree lct

    要打mul和add的lct 50000+的mod用unsigned int好了TAT (坑爹没打pc('\n');(静态)调了好久,样例竟然只输出一个,orz,也不提示PE T_T) #include ...

  4. Nginx优化具体,应对高并发

     nginx指令中的优化(配置文件) worker_processes 8; nginx进程数,建议依照cpu数目来指定.一般为它的倍数. worker_cpu_affinity 00000001 ...

  5. adb出现adb server is out of date时的解决的方法

    出错的原因是adb的port被其它程序的进程占据了,所以要做的就是找到并kill该进程.步骤:. 1.在cmd中运行adb nodaemon server,查看adb的port号是多少,普通情况下是5 ...

  6. cocos2d-x项目过程记录(cocos2d-x的新知)

    1.给CCMenuItem带上点击参数(这是CCNode的一个属性) CCMenuItem *item = CCMenuItemSprite::create(unselectedPic, select ...

  7. Java基础知识强化之IO流笔记05:try...catch...finally包含的代码是运行期的

    1. 代码示例: 上面看到的第13行:  Date  d = null;(这里必须初始化) 第14~20行使用try...catch...finally包含代码,这里的代码已经变成运行期代码.此时我们 ...

  8. 【开源java游戏框架libgdx专题】-10-核心库-Viewport

    Viewport类,又称为视口类,主要负责管理游戏相机,处理游戏世界坐标与布景层坐标的换算关系.在移动端开发,不像PC端容易.因为要适配不同分辨率的设备.libgdx处理不同的设备屏幕时,用视口处理舞 ...

  9. java中的IO一

    一.IO操作的目标 IO的流向 二.IO的分类方法 1.第一种分法:输入流.输出流 2.第二种分法:字节流.字符流 3.第三种分法:节点流.处理流 三.IO当中的核心类 核心类中的核心方法 Input ...

  10. 如何修改mtk android 默认拍照size

    [DESCRIPTION] 修改默认拍照size [SOLUTION] 修改默认的capture size,改变camera feature table的FID_CAP_SIZE default值不起 ...