能够,COOKIE和SESSION都是用来实现会话机制的,因为http协议是无状态的,因此要想跟踪一个用户在同一个网站之间不一样页面的状态,须要有这么一个机制----会话机制。
COOKIE:将会话信息的保存到浏览器端。
SESSION:将会话信息保存到服务器端。php
SESSION默认状况下是基于COOKIE的,对于SESSION来讲,每生成一个SESSIONID,都会将其发送到浏览器端,让后将其保存到cookie当中。
若是禁用了COOKIE,则基于COOKIE的SESSION很差使了,咱们可使用get,传递SID,或者直接开启透明的SID(此时须要关闭基于cookie的SESSION配置项)。html
http://www.example.com:8080/test
)。请求中包含如下变量:用户名(username):温柔一刀
密码(pwd):&123=321&321=123&
我的简介(intro):Hello world!
且该http server须要如下cookie来进行简单的用户动做跟踪:
cur_query:you&me
last_tm:...(上次请求的unix时间戳,定为当前请求时间前10分钟)
cur_tm:...(当前请求的unix时间戳)
设置超时为10秒,发出请求后,将http server的响应内容输出(腾讯)web
参考代码:数据库
<?php if($fp = fsockopen('localhost','80')){ //链接成功 $request_data="POST/2.php HTTP/1.1"."\r\n";//请求行 $request_data.="Host:localhost"."\r\n";//host头信息 $request_data.="User-Agent:Mozilla/5.0(compatible;MSIE 9.0;Windows NT 6.1;Trident/5.0)"."\r\n";//host头信息 $request_content="username=".urlencode('温柔一刀') ."&pwd=".urlencode('&123=321&321=123&') ."&intro=".urlencode("Hello world!"); $request_data.="Content-Type:application/x-www-form-urlencoded"."\r\n"; $request_data.="Content-Length:".strlen($request_content)."\r\n"; $cur_query=urlencode("you&me"); $last_tm=time()-10*60; $cur_tm=time(); $request_data.="Cookie:cur_query=$cur_query;last_tm=$last_tm;cur_tm=$cur_tm"."\r\n"; $request_data.="\r\n";//请求头信息结束时的空行 //请求主体数据部分 $request_data.=$request_content; //利用创建好的通道,将数据发送过去 fwrite($fp,$request_data);//写入数据(发送数据) //读取数据 while(!feof($fp)){//判断是否没有到文件末尾 $resp_data=fgets($fp); echo$resp_data.'<br>'; } } ?>
未经受权:访问因为凭据无效被拒绝
header("HTTP/1.0 404 Not Found")apache
要注意这里的生存时间指的是什么?
因为session默认是基于cookie的,也就是说使用session会话技术,首先是将session数据保存到服务器端,其次会将sessionID保存到浏览器端,保存在服务器端的session文件生命周期由php.ini中的session.gc_maxlifetime、gc_probability和gc_divisor来决定,而保存在客户端的sessionID由客户端cookie来决定。
默认其生存周期直到浏览器关闭,它也能够经过php.ini中的设置session.cookie_lifetime来控制,两者共同来决定session的生存时间,两者中的其中任意一个失效了,就会形成session失效,要根据本身的需求来决定是要从哪方面来修改其生存时间。编程
参考1:将php.ini中的session.gc_maxlifetime设置为9999重启apache
参考2:浏览器
$savePath="./session_save_dir/"; $lifeTime=小时*秒; session_save_path($savePath); session_set_cookie_params($lifeTime); session_start();
参考3:缓存
session_start(); $lifeTime=24*3600;//保存一天 setcookie(session_name(),session_id(),time()+$lifeTime,"/");
最主要的两个选择是SESSION和COOKIE。使用SESSION的方法是在每一页的开始加session_start(),而后利用$_SESSION来存取SESSION变量。至于COOKIE你只需记着一个原则:在输出任何文字以前调用set_cookie()函数设置COOKIE,使用$_COOKIE获取COOKIE变量。安全
header(“content-type:text/html;charset=utf-8”);服务器
setcookie(‘username’,’jack’,time()+7243600);
cookie的总数量没有限制,可是每一个域名的COOKIE数量和每一个COOKIE的大小是有限制的!
IE每一个域名限制为50个。
Firefox每一个域名cookie限制为50个。
Opera每一个域名cookie限制为30个。
Safari/webkit貌似没有cookie限制。可是假如cookie不少,则会使header大小超过服务器的处理的限制,会致使错误发生。
不一样浏览器间每一个cookie文件大小也不一样
Firefox和safari是4097个字节,包括名(name)、值(value)和等号。
Opera是4096个字节,包括:名(name)、值(value)和等号。
IE是4095个字节,包括:名(name)、值(value)和等号。
session_start()前面不能有任何输出,包括空行。
前面不能有任何输出,包括空行。
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议
POP3(Post Office Protocol 3)邮局协议第3版
HTTP(Hypertext Transfer Protocol)超文本传输协议
FTP(File Transfer Protocol)文件传输协议
DNS(Domain Name System and Domain Name Service protocol)域名系统(服务)协议
COOKIE和SESSION都是用于会话机制,COOKIE保存在客户端,而SESSION则保存在服务器端。
在默认状况下,SESSION机制是基于COOKIE的,每生成一个SESSIONID,都会将其发送到浏览器端,让后将其保存到COOKIE当中,在下次请求的时候,由浏览器携带这个COOKIE。
要想多台web服务器共享SESSION,能够利用MySQL数据库存储SESSION数据。
200 OK服务器成功处理了请求
301 Moved Permanently(重定向)请求的URL已移走
304 Not Modified(未修改)客户的缓存资源是最新的,要客户端使用缓存
403 Forbidden(禁止)请求被服务器拒绝了
404 Not Found未找到资源
Internal Server Error(内部服务器错误)服务器遇到一个错误,使其没法为请求提供服务
session机制是一种服务器端的机制,它将数据保存到服务器端。
当程序须要为某个客户端的请求建立一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识,称为sessionid,若是已包含一个sessionid则说明之前已经为此客户端建立过session,服务器就按照sessionid把这个session检索出来使用(若是检索不到,可能会新建一个),若是客户端请求不包含sessionid,则为此客户端建立一个session而且生成一个与此session相关联的sessionid,sessionid的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionid将被在本次响应中返回给客户端以cookie的形式保存。
session在大访问量网站上确实影响系统性能,影响性能的缘由之一由文件系统设计形成,在同一个目录下超过10000个文件时,文件的定位将很是耗时。另外就是小文件的效率问题,通常咱们的session数据都不会太大(1~2K),若是有大量这样1~2K的文件在磁盘上,IO效率确定会不好,咱们能够采用改写session存储机制,好比存放到数据库中。
6个,255.255.255.248换算成二进制就是11111111.11111111.11111111.11111000
后面的三位用来表示主机,前面的29位用来表示网络。
三位表示主机,就是能够用来表示2^3=8个,再减去网络地址和广播地址,就是6个了。
TCP是主机对主机层的传输控制协议,提供可靠的链接服务,采用三次握手确认创建一个链接:
第一次握手:创建链接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
header函数
POST www.10086.cn HTTP/1.1 Accept:text/html,application/xhtml+xml,*/* Referer:http://localhost/a.html Accept-Language:zh-CN User-Agent:Mozilla/5.0(compatible;MSIE 10.0;Windows NT 6.1;WOW64;Trident/6.0; KB974487) Content-Type:application/x-www-form-urlencoded Accept-Encoding:gzip,deflate Host:localhost Content-Length:25 Connection:Keep-Alive username=abc&password=123