20150730-21 验证码.docVIP

  • 1
  • 0
  • 约3.3千字
  • 约 15页
  • 2017-11-24 发布于河南
  • 举报
20150730-21 验证码

回顾 会话技术: 一次会话过程中(浏览器关闭),能够让服务器识别浏览器,从而实现跨脚本共享数据的技术. 会话技术分为两种: cookie和session Cookie: 将数据保存浏览器上(借助HTTP协议: set-cookie和cookie) 利用setcookie函数和$_COOKIE数组实现 Session: 将数据保存在服务器的文件中, 需要通过cookie技术实现. Session_start函数和$_SESSION实现 面试问题: 如果禁用cookie, session能不能实现?如果可以,怎么实现? 如果对方选择禁用cookie,那么意味着对方是”高手”, 可以理解为当前客户放弃网站. 如果需要实现, 可以使用a标签来代替 保证sessionid不是单纯的靠cookie保存 告诉PHP, sessionid还可以使用a标签进行传递(携带) 如果禁用cookie访问session: 需要保证脚本中必须有a标签 手动实现: 手动在a标签的url中增加PHPSESSID=值, 然后在获取session的(读取),手动设置sessionid. 获取session名字和id信息,保存到URL中 设置sessionid: 让session_start不会产生新的 验证码 验证码了解 验证码: 一个随机的字符串 验证码: Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试),将验证码内容放到图片上. 缩写为(captcha) 目的: 区分计算和人: 人能看到计算机一定是先看到的 如何区分? 图片在计算中是二进制形式存在, 图片目前来说,还不能完全的被计算机识别其中的内容, 但是人眼非常容易识别. 验证码本质: 将随机的字符串印在图片上, 人可以轻而易举的从图片上识别内容(计算机不可以) 图片制作 如何生成一张图片, 如何在图片中加入内容? PHP本身不支持图片操作: 要操作必须通过扩展:GD扩展 开启GD扩展: 在安装ecshop的时候已经开启过. 开启扩展之后: 一系列跟图片操作相关的函数就可以使用: 都是以image开头 图片制作流程 准备画布: 需要指定长和宽(资源) 图形资源 Imagecreatetruecolor(宽,高): 创建一个真彩画布 给画布分配颜色: 在php中,若想在画布上使用某种颜色,必须前提的是给当前画布分配上,然后才能使用. 颜色句柄 Imagecolorallocate(图片资源, 红色[0-255],绿色,蓝色); 增加内容(作画): 在图片中写入对应的内容 Imagestring(图片资源,字体大小[1-5],起始X坐标,起始Y坐标,要写内容,颜色句柄) 保存图片: 将已经处理好的图片资源,输出或者保存 Imagepng(图片资源[,保存位置]) //保存成png格式: 没有第二个参数代表输出 输出 保存: 增加第二个参数 销毁图片所占内存(资源) 图片资源通常很大,非常占内存: 需要用完就立即释放 Imagedestroy(图像资源) Imagecreatetruecolor Imagecolorallocate Imagestring Imagepng Imagedestroy 制作验证码 产生随机字符串 Chr(): 将对应ASCII码表中的数字转换成对应的字符 制作画布 制作画布背景 imagefill(图片资源,起始X坐标,起始Y坐标,填充颜色); //自动找相邻且颜色相同的点渲染 增加干扰线 Imageline(图片资源,起点X, 起点Y, 终点X, 终点Y, 颜色句柄); 增加边框 Imagerectangle(图片资源,起始点X,起点Y,终点X,终点Y,颜色句柄) 增加梅花(*): imagestring 写入验证码内容 保存输出: 验证码图片通常是输出 销毁资源 封装验证码类 在admin/includes创建一个验证码类 验证码要实现,需要很多参数: 宽和高,字符串长度,干扰线, 干扰点.需要增加属性 初始化属性: 构造方法 增加方法: 制作验证码图片 增加画布 填充背景色 获得验证码字符串: 单独增加方法获取字符串 将字符串写入图片 增加边框 增加干扰线 增加干扰点(*) 输出图片 销毁资源 项目使用验证码 登录表单需要验证码图片. /admin/templates/login.html 接收动作处理请求. /admin/privilege.php?act=captcha 验证码验证原理 验证码验证原理: 拿用户提交的与服务器保存的进行比较 验证码要实现功能,还需要两个步骤 生成验证码的时候将验证码数据保存到session中: /ad

文档评论(0)

1亿VIP精品文档

相关文档