Cookie
- Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。
- Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。
- 功能特点:
1.在同一个页面中设置 Cookie,实际上是按从后往前的顺序进行的。如果要先删除一个 Cookie,再写入一个 Cookie,则必须先写入语句,再写删除语句,否则会出现错误
2.Cookie是面向路径的。缺省路径(path)属性时,Web 服务器页会自动传递当前路径给浏览器,指定路径强制服务器使用设置的路径。在一个目录页面里设置的 Cookie 在另一个目录的页面里是看不到的
3.Cookie 必须在 HTML 文件的内容输出之前设置;不同的浏览器(Netscape Navigator、Internet Explorer)对 Cookie 的处理不一致,使用时一定要考虑;客户端用户如果设置禁止 Cookie,则 Cookie 不能建立。 并且在客户端,一个浏览器能创建的 Cookie 数量最多为 300 个,并且每个不能超过 4KB,每个 Web 站点能设置的 Cookie 总数不能超过 20 个 - 方法
方法 | 描述 |
---|---|
getDomain() | 返回cookie的域名 |
getMaxAge() | 返回cookie的存活时间 |
getName() | 返回cookie的名字 |
getPath() | 返回cookie适用的路径 |
getSecure() | 如果浏览器通过安全协议发送Cookie将返回true值,如果浏览器使用标准协议刚返回false值 |
getValue() | 返回cookie的值 |
getVersion() | 返回cookie所遵从的协议版本setComment(String purpose);设置cookie的注释 |
setPath(String url) | 设置Cookie的适用路径 |
setSecure(Boolean flag) | 设置浏览器是否仅仅使用安全协议来发送cookie,例如使用Https或ssl |
setValue(String newvalue) | cookie创建后设置一个新的值 |
setVersion(int v) | 设置cookie所遵从的协议版本 |
Session
- Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。
- 工作原理
1.当一个session第一次被启用时,一个独一的标识被存储于本地的cookie中。
2.首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
3.当执行PHP脚本时,通过使用session_register()函数注册session变量。
4.当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。 - 特点
1.不是线程安全的,应该避免多个线程共享同一个Session实例;
2.Session实例是轻量级的,所谓轻量级:是指他的创建和删除不需要消耗太多资源;
3.Session对象内部有一个缓存,被称为Hibernate第一缓存,他存放被当前工作单元中加载的对象,每个Session实例都有自己的缓存。 - 方法
方法 | 描述 |
---|---|
setAttribute() | 设置Session属性 |
getAttribute() | 返回Session属性 |
getAttributeNames() | 返回Session中存在的属性名 |
removeAttribute(String attribute) | 移除Session属性 |
getId() | 返回Session的ID。该ID由服务器自动创建,不会重复 |
getCreationTime() | 返回Session的创建日期。返回类型为long,常被转化为Date类型 |
getLastAccessedTime() | 返回Session的最后活跃时间。返回类型为long |
getMaxInactiveInterval() | 返回Session的超时时间。单位为秒 |
setMaxInactiveInterval(int second) | 设置Session的超时时间。单位为秒 |
Cookie和Session
- Cookie和Session的区别:
1.Session是保存在服务器上的数据结构,用于跟踪用户的状态。此数据可以保存在群集、数据库、文件中。Cookie是客户端存储用户信息的机制。它用于记录有关用户的一些信息,是实现会话的一种方式。
2.Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。它只允许4kb它没有在cookie中保存多个变量。
3.cookie的存储限制了数据量,只允许4KB,而session是无限量的。
4.我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全。
5.设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。