12-8-协议、请求、响应、画布(验证码制作)

fwrite(文件句柄,写入内容)         返回值为写入文件的字节长度

fopen(文件路径,打开方式)          这个便是文件句柄

fclose(文件句柄)              关闭文件句柄

文件句柄打开后,可以对文件进行读写操作,关闭文件句柄便不能再对文件进行读写操作了。

copy(被复制文件路径,复制后存放文件的路径)                 复制文件

存放位置要包含文件名

unlink(文件路径)              删除文件

filemtime(文件路径)                 返回制定文件最后被修改的时间,得到一个时间戳

filesize(文件路径)            返回文件的大小,单位字节

关于http的请求协议包:

  1,  请求行(request-line)

    请求方式—请求路径—协议版本

    需要单独占用一行,路径不包括域名

  2,  请求头(request-line)

    本次请求需要用到的所有协议项的集合

    host:指明请求服务器的主机名(域名)

    accept-encoding:gzip指明浏览器所支持的文件压缩编码类型

    accept_charset:浏览器支持的字符集

    referer此次请求来自哪个网址

    accept-language:可以接受的语言类型

    cookie:若有该网站的未过期cookie则代入cookie数据

    user-agent:浏览器的内核信息

    accept:浏览器可以接受的数据类型

  3,  空行

    用来分隔请求头和请求数据,表名请求头到此结束

  4,  请求数据(request-line)

    请求的数据存放于此,比如注册账号时输入的个人信息。

使用telnet向服务器发送请求

在cmd中:    1,telnet  192.168.148.10  80

2,ctrl+]  进行数据的回显

3,输入请求行、请求头、空行

每次telnet发送请求只能单次,再次使用需要重新开启telnet

       关于http相应协议包:

  1,  响应行(状态行)

    协议版本、状态码(404:请求资源不存在)、状态描述

常见状态码:

    200 ok:请求成功

    302 found:重定向,配合响应头location使用,服务器要求浏览器重新发起一次请求

    404 not found:请求资源不存在

    403 forbidden:没有权限访问该资源

    500 server internet error:服务器内部错误,不能正常进行响应

    独占一行

  2,  响应头(也是一些协议的集合)

    协议的集合

    协议名:值

    server:服务器信息

    date:响应时间

    last-modified:文件最后修改时间

    content-length:响应主体的长度(字节)

    content-type:相应内容的数据类型—text/html  image/png

    location:重定向,浏览器遇到这个选项便立刻跳转,不会解析后面的内容

    refresh:重定向,浏览器遇到这个选项会准备跳转,时间到了便会跳转,继续向下解析

    content-encodeing:文件编码格式

    cache-control:缓存控制,no-cached—不要缓存

  3,  空行

  4,  响应主体(相应数据)

  PHP模拟http响应

通过header()函数

header(“协议名:协议值”);

header(“Content-Type:text/html;charset=utf-8”);  设置文件编码

    header(“location:新的url或uri”);  设置跳转,浏览器访问到该行时进行跳转(站内用uri)

    header(“refresh:刷新等待的时间;url=url或uri”)  在等待过程中,后面代码将继续执行

验证码

PHP默认没有处理图片的功能,所以要加载GD库(图片处理扩展)

php.ini——extension=php_gd2.dll

画布:     imagecreate(width,height);    (256种颜色)

imagecreatetruecolor(width,height);     (24位真彩)(一般使用)

颜色句柄:     imagecolorallocate(img,red,green,blue);

img:画布资源

绘制文字:     imagestring(img,size,x,y,sting,color);

size:文字大小

x、y:起始坐标(左上角为原点)

string:文字内容

color:颜色句柄

image<png|jpeg|gif>(画布资源[,保存路径])

输出时要使用header函数设置相应头信息,告诉浏览器这是个图片

输出前使用ob_clean()清理数据缓冲区

  1,  填充背景

    a)         imagefill(img,x,y,color);            把坐标点颜色相同且连续的区域填色

        img:画布资源

        x、y:坐标点

        color:颜色句柄

  2,  添加干扰线

    a)         imageline(img,x1,y1,x2,y2,color);

  3,  添加噪点(干扰点)

    a)         imagesetpixel(img,x,y,color);

  代码实现:

  1.      img = imagecreatetruecolor(170,40);

  2.      backcolor = imagecolorallocate($img,mt_rand(180,255),mt_rand(0,255),mt_rand(180,255));

  3.      imaggefill($img,0,0,$backcolor);

  4.      $arr = array_merge(range(‘A’,’Z’),rang(‘a’,’z’),range(0,9));

  5.      shuffle($arr);

  6.      $rand_keys = arr_rand($arr,4);

  7.      $str = ‘’;

  8.      foreach($rand_key as $value){

           $str .= $arr[$value];

      }

  9.      $span = ceil(170/(4+1));

  10.   for($i=1;$i<=4;$i++){

          $strcolor = imagecolorallocate($img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));

                   imagestring($img,5,$i*$span,10,$str[$i-1],$strcolor);

      }

  11.   for($i=1;$i<=6;$i++){

           $linecolor = imagecolorallocate($img,mt_rand(5,100),mt_rand(50,100),mt_rand(0,100));

           imageline($img,mt_rand(0,169),mt_rand(0,39),mt_rand(0,169),mt_rand(0,39),$linecolor);

    }

  12.   for($i=1;$i<=170*40*0.03;$i++){

           $pxcolor = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)

      imagesetpixel($img,mt_rand(0,169),mt_rand(0,39),$pxcolor);

    }

  13.   header(“Content-Type:image/png”);

    ob_clean();

    imagepng($img);

时间: 2024-12-05 14:20:05

12-8-协议、请求、响应、画布(验证码制作)的相关文章

HTTP协议请求响应模型

http协议请求响应模型 场景:登录 1.客户端发起请求到api接口 1.1用户在客户端填写用户名和密码,点击登录,发送请求 2.api接收到客户端发起的用户请求 2.1 api对业务逻辑进行验证 2.1.1验证用户名和密码是否合法 比如:用户名要求必须为真实手机号码(11位,1开头,第二位34) 如果验证失败,即用户名不合法,那么需要给客户端发送响应码 比如码值为1,2,3 1代表用户名格式错误 2代表用户名或密码错误 3代表密码格式错误 3.api会将用户输入的数据发给db层 3.1数据库查

【报文】理解HTTP协议的Request/Response(请求响应)模型

[报文]理解HTTP协议的Request/Response(请求响应)模型 系列目录 [简介]"请求/响应"模型 http://www.cnblogs.com/engraver-lxw/p/7550514.html [原理]理解HTTP协议的Request/Response(请求响应)模型 http://www.cnblogs.com/engraver-lxw/p/7550691.html [报文]理解HTTP协议的Request/Response(请求响应)模型--当前 http:/

iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。

通过该方式同时也可以实现底层网络库AFNetworking及ASIHTTPRequest的代理设置.达到我们开发时的抓包分析及 IP地址指定访问开发/仿真任一台提供API接口服务器的目的. 首先下载Charles并配置我们的开发机iPhone终端的代理IP及Charles配置一下, 步骤如下: 1).取得mac本机的IP地址:如下图中的:192.168.1.106 如图: 2).通过下载的Charles来配置我们的代理服务器: 如下图: 将我们的开发机iphone终端代理设置成我们mac本的ip

03 http请求协议与响应协议

编辑本博客 yuan先生blogs 请求协议 请求格式 请求首行: 请求方式:get,post 请求路径:/form/entry 协议版本:HTTP/1.1 请求头: Host Connection Content-Type Content-Length:数据内容大小 请求头和请求体之间必须两个\r\n来分开 请求内容实体:只有post请求才有请求体,get请求的数据包含在url地址中 原文地址:https://www.cnblogs.com/yaya625202/p/9228614.html

wget/curl查看请求响应头信息

wget / curl 是两个比较方便的测试http功能的命令行工具,大多数情况下,测试http功能主要是查看请求响应 头信息 ,而给这两个工具加上适当的命令行参数即可轻易做到,其实查man手册就能找到对应的参数选项,不过这里仍然mark一下. wget --debug Turn on debug output, meaning various information important to the developers of Wget if it does not work properly

基于请求响应的简单介绍

Http请求响应过程: Http是基于TCP/IP之上的协议. 基本流程: 浏览器      -------请求行/请求头/请求体---------> Web服务器 --> 应用代码(servlet/JSP/.html) <----- 响应状态/响应头/响应体----- 请求行: GET/POST URL?querystring请求头: Content-Length/Connection/User-Agent/Accept-Language/Referer/Cookie/Host...请

动态验证码制作(RandomCodeImage )

在很多的网页中,他们的登录,注册等等地方都有验证码的存在,这下验证码都是动态生成的,有些验证码模糊不堪,有些干扰很多, 而验证码是用来干什么的呢?防止人为输入的不安全?错,验证码真正的用途在于,防止机器的识别,所以,验证码往往都是图片格式的, 人可以识别出来,而机器就识别不出来,这样就可以防止机器识别,就可以保证正在操作的是人,而并不是机器的操作,安全性更高: 下面就分享一下我自己写得一个简单的验证码制作的代码!希望可以一起学习,有什么不足,敬请指正: 这是我封装的一个验证码制作的java类:

VS2008 C++ 利用WinHttp API获取Http请求/响应头部Header

http://www.cnblogs.com/LCCRNblog/p/3833472.html 这一篇博客中,实现了获取http请求/响应后的html源码,现在需要获取http请求/响应的头部Header..通过对WinHttp Api的查看,现给出实现代码.. 1 // WinHttpTest.cpp : 定义控制台应用程序的入口点. 2 // 3 //#include <stdafx.h> 4 #include <vector> 5 #include <winsock2.

HTTP请求响应过程 与HTTPS区别

原文:HTTP请求响应过程 与HTTPS区别 HTTP协议学习笔记,基础,干货 HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. 服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议.与之类似的还有文件传送协议(file transfer protocol,FTP),简单邮件传送协议(simple mail ttransfer protocol,SMTP)等. HTTP是在七层网络模型中的应用层的协议,由发送请求和接受响应构成,是一个标准的客户端服务器模型.

【简介】“请求/响应”模型

[简介]"请求/响应"模型  "请求/响应"(Request/Response)模型一种通用的网络模型架构.      运用此模型可轻易存取Web资源,简化跨越网络的数据传输操作.它支持HTTP.FTP等通用的网络协议. 一."请求/响应"模型 [简介]"请求/响应"模型--当前 http://www.cnblogs.com/engraver-lxw/p/7550514.html [原理]理解HTTP协议的Request/Re