cookie是客户端访问服务器,由服务器产生存放在客户端的文件。cookie文件有cookie名称,cookie ID组成。cookie里面有客户端生成的数据。当浏览器再次访问服务器的时候发送数据的时候会把cookie文件发送。服务器接收cookie会把里面的数据读取到$_COOKIE全局数组里。不过cookie可以被仿造。所以不够安全。
session文件是存放在服务端里的文件,里面包含一些服务端生产的数据。使用session的时候要session_start()开启回话。
开启的时候会干下面这几件事。
<?php
session_id('123');
session_name('aa');
session_start();
$_SESSION['name']='123';
session_id('121');
<?
1,session_start()会获取session_name()://系统默认是SESSIONID,获取session_id():一个系统默认生成的随机字符串。
2,在session_start()前,session_name():session对应的cookie名称,与session_id():session文件对应的ID是可以设置的。
3,获取到session_name()与session_id()后。如果服务端没有收到前端发送的名为aa,值为123的cookie则会创建这样的一个cookie发送到前端。在服务端如果没有sess_123这样的session文件则会创建。
如果该session文件存在。则会把该文件的数据读取到$_SESSION这个全局变量中。
4,session_start(); 开启后,如果使用了session_id('121'), 会在服务端生产一个sess_abc的session文件。 如果预定义全局数组$_SESSION中的数据有变动,则会把$_SESSION中的数据存储到sess_121的session文件中,覆盖里面原有的数据。
注:session_start()开启后会检查有没有收到客户端发来的对应名称的cookie,如果有以该cookieID去在服务端生产session文件,如果该session文件存在,就把session文件中的数据读取到$_SESSION中。如果没有收到客户端发送对应名称的cookie,则在服务端以session_id()去生成一个session文件。并把session文件中的数据读取到$_SESSION中。
session_start()session开启后。在程序结束前程序会把$_SESSION里的数据存在sess_session_id()的session文件中,并覆盖里面的数据,如果该文件没有就生成新的session文件再存放数据。