php关于Session和cookie总结

什么是 Cookie?

cookie 经常使用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机经过浏览器请求页面时,它同时会发送 cookie。经过 PHP,可以建立并取回 cookie 的值。php

1、关于建立cookiehtml

setcookie(name, value, expire, path, domain);

例子:算法

下面的例子会设置一个cookie键值对,过时时间为1小时,服务器会将该cookie发送到客户端。(在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码)数据库

<?php 
setcookie("user", "Alex Porter", time()+3600);
?>

<html>
<body>

</body>
</html>

2、服务器端如何取回cookie浏览器

PHP 的 $_COOKIE 超全局变量用于取回 cookie 的值。安全

在下面的例子中,咱们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:服务器

<?php
// Print a cookie
echo $_COOKIE["user"];

// A way to view all cookies
print_r($_COOKIE);
?>

在下面的例子中,咱们使用 isset() 函数来确认是否已设置了 cookie: cookie

<html>
<body>

<?php
if (isset($_COOKIE["user"]))
  //确认是登陆态,继续操做
else
  //重定向到登陆界面
?>

</body>
</html>

因为使用了setcookie()设置cookie信息,浏览器端之后每次向该域内的php脚本发送请求时,都会自动在请求头上加上cookie字段。上面这种方法可用于防止用户绕过登陆界面,直接访问内部页面。(所以setcookie()通常应该在登陆界面验证成功后使用),有了cookie验证以后,才能够维护已登陆用户的状态。session

 

3、如何删除cookiedom

当删除 cookie 时,您应当使过时日期变动为过去的时间点。

删除的例子:

<?php 
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>

4、cookie总结

Cookie在项目实战中都有哪些应用:

1>记住用户名密码

2>在cookie的生命周期以内,维护用户的登陆状态

 

Cookie的优缺点

1>优势:a.不须要服务器资源空间 b.持久时间更长

2>缺点:a.客户端大小受限制 b.用户禁用Cookie那么就废用了 c.不安全

(6)Cookie和Session的区别和联系

1>联系:Cookie能够在客户端为session保存惟一标识(sessionID)

2>区别:Cookie机制采用的是在客户端(浏览器)保持状态的方案,而session机制采用的是在服务器端保持状态的方案

 

 

关于session

1、session 变量

当您运行一个应用程序时,您会打开它,作些更改,而后关闭它。这很像一次会话。计算机清楚你是谁。它知道你什么时候启动应用程序,并在什么时候终止。可是在因特网上,存在一个问题:服务器不知道你是谁以及你作什么,这是因为 HTTP 地址不能维持状态。

经过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(好比用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。若是您须要永久储存信息,能够把数据存储在数据库中。

Session 的工做机制是:为每一个访问者建立一个惟一的 id (sessionID),并基于这个 sessionID 来存储变量。sessionID 存储在 cookie 中,亦或经过 URL 进行传导。

 

2、开始启动会话

<?php session_start(); ?>

<html>
<body>

</body>
</html>

session_start()作了哪些初始化工做?

上面的代码首先会尝试在服务器端读取客户端发来的请求报文中名为sessionID的cookie值。若没有读取到,说明用户首次登陆,会向服务器注册用户的会话,同时会为用户会话分配一个 sessionID。而且将名为sessionID的cookie发送给客户端。 

关于sessionID的产生:

PHP在使用默认的 session.save_handler = files 方式时,PHPSESSIONID的生产算法原理以下:

hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器)

从以上hash_func(*)中的数据采样值的内容分析,多个用户在同一台服务器时所生产的PHPSESSIONID重复的几率极低(至少为百万份之一)

如何获取sessionID的值?

session_id() 能够用来获取/设置 当前会话 ID。相似cookie机制,咱们也能够经过检查sessionID的值是否存在,来验证用户是不是已登陆状态。

<?php
  session_start();
  echo session_id();
  // 输出 08nr1fav9jqs2pdi5qlpsmd247
?>

3、存储session变量

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:

<?php
session_start();
// store session data
$_SESSION['views']=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>

</body>
</html>

 

4、销毁session

unset() 函数用于释放指定的 session 变量:

<?php
unset($_SESSION['views']);
?>

也能够经过 session_destroy() 函数完全终结 session: (session_destroy() 将重置 session,您将失去全部已存储的 session 数据。)

<?php
session_destroy();
?>

 

5、session总结

Session项目实战中都有哪些应用:

1>记录用户登录信息,全局使用

2>制做验证码,验证对比操做

3>将session保存到数据库能够实现:a.控制一个账号只能一我的登陆

 

Session的优缺点:

1>session的优势:惟一性、方便调用、不会过多占用资源,是存储在服务器的一组临时数据。通常状况下,咱们在作用户登陆时,会将用户数据存入session。这样,在任何页面均可以方便调用,并且 每一个客户端会产生惟一的session_id,不会混肴。而且在关闭浏览器后,服务器会有session回收机制,自动删除过时session

2>缺点:在客户端是以cookie方式保存的,禁用cookie就没用了。

 

Session和Cookie的联系以及区别:

1>联系:Session在客户端也须要保存一个标识,因此就要借助Cookie,session是经过cookie来工做的session和cookie之间是经过$_COOKIE['PHPSESSID']来联系的,经过$_COOKIE['PHPSESSID']能够知道session的id,从而获取到其余的信息。

2>区别:Cookie机制采用的是在客户端(浏览器)保持状态的方案,而session机制采用的是在服务器端保持状态的方案

相关文章
相关标签/搜索