Session及其和Cookie的区别
关联课件: 7子项目七 - Session及其和Cookie的区别(点击在线预览)
7.3.1.2 Session机制的原理及使用
Session存储于服务器端(默认以文件方式存储),根据客户端提供的session id得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者访问的URL的附加数据传送给服务器,然后服务器读Session的目录。也就是说,session id是取得存储在服务上Session变量的身份证。如果配置文件“php.ini”中没有设置“session.auto_start=1”,那么要使用Session就必须先运行代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之惟一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。
下面通过一个实例来学习一下Session的使用。
把文件“7-1.php”、“7-1action.php”、“7-1action-check.php”中的代码做一些改动。
1)“7-1.php”中的执行代码无需变化,详细请查看代码“7-2action.php”。
2)“7-1action.php”中的执行代码去掉:
setcookie("user_name", $_POST[user_name]);
setcookie("user_pw", $_POST[user_pw]);
增加代码:
$_SESSION["user_name"]=$_POST["user_name"];
$_SESSION["user_pw"]=$_POST["user_pw"];
并把做下列替换:
将"$_COOKIE["user_name"]"替换成"$_SESSION["user_name"]";
将"$_COOKIE["user_pw"]"替换成"$_SESSION["user_pw"]"。
详细请查看代码“7-2action.php”。
3)“7-2action-check.php”中执行代码做如下替换:
将"$_COOKIE["user_name"]"替换成"$_SESSION["user_name"]";
将"$_COOKIE["user_pw"]"替换成"$_SESSION["user_pw"]"。
详细请查看代码“7-2action-check.php”。
其运行的结果如图7-5所示。
(a)程序7-2.php的运行结果
(b)程序7-4 action.php的运行结果
(c) 程序7-2action-check.php的运行结果
不难发现,注册Session的方法为:$_SESSION["Session_name"]=值。
7.3.1.3 Cookie与Session的比较
1. 存储机制。
Cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制,而Session是存储于服务器端(默认以文件方式存储session)的。
2. 生效条件
Cookie的生效与浏览器端设置有关,如果浏览器端禁用了Cookie,那么它就不能生效了。Session的生效与服务器端的配置有关,如果“php.ini”中没有设置“session.auto_start=1”,那么要使用Session就必须先运行代码session_start()。
3. 注册方法
Cookie的注册方法为:setcookie("cookie_name", "值");Session的注册方法为:$_SESSION ["Session_name"]=值。
4. 生效范围
Cookie的生效范围为注册后的所有页,Session的生效范围为注册起的所有页。
值得注意的是,PHP中的Session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的Cookie出现问题的时候就会影响Session了。但是,session不一定必须依赖Cookie,这也是Session相比Cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL附加数据中,这样再通过session id就能跨页使用Session变量了。
session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。
cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。
cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。 简单的说,当你登录一个网站的时候,
如果web服务器端使用的是session,那么所有的数据都保存在服务器上, 如果浏览器使用的是cookie,那么所有的数据都保存在浏览器端。
页面用session好还是cookie好呢
Cookie的生效范围为注册后的所有页,Session的生效范围为注册起的所有页.
浏览器用COOKIE是不是比较好?