php入门05-会话控制(session与cookie)

cookie简介

Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端。多数web程序都支持Cookie的操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制。

PHP中的Cookie具有非常广泛的使用,经常用来存储用户的登录信息,购物车等,且在使用会话Session时通常使用Cookie来存储会话id来识别用户,Cookie具备有效期,当有效期结束之后,Cookie会自动的从客户端删除。

设置cookie

PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个:

  • name:( Cookie名)可以通过$_COOKIE[‘name‘] 进行访问
  • value:(Cookie的值)
  • expire:(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
  • path:(有效路径)如果路径设置为‘/‘,则整个网站都有效
  • domain:(有效域)默认整个域名都有效,如果设置了‘www.imooc.com‘,则只在www子域中有效
$value = ‘test‘;
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600);  //有效期一小时
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域

cookie的删除与过期时间

php中没有删除Cookie的函数,在PHP中删除cookie也是采用setcookie函数来实现。

setcookie(‘test‘, ‘‘, time()-1); 

可以看到将cookie的过期时间设置到当前时间之前,则该cookie会自动失效,也就达到了删除cookie的目的。之所以这么设计是因为cookie是通过HTTP的标头来传递的,客户端根据服务端返回的Set-Cookie段来进行cookie的设置,如果删除cookie需要使用新的Del-Cookie来实现,则HTTP头就会变得复杂,实际上仅通过Set-Cookie就可以简单明了的实现Cookie的设置、更新与删除。

cookie的有效路径

cookie中的路径用来控制设置的cookie在哪个路径下有效,默认为‘/‘,在所有路径下都有,当设定了其他路径之后,则只在设定的路径以及子路径下有效,例如:

setcookie(‘test‘, time(), 0, ‘/path‘);

上面的设置会使test在/path以及子路径/path/abc下都有效,但是在根目录下就读取不到test的cookie值。

session与cookie的异同

cookie相对不是太安全,容易被盗用导致cookie欺骗
单个cookie的值最大只能存储4k
每次请求都要进行网络传输,占用带宽

session是将用户的会话数据存储在服务端,没有大小限制,通过一个session_id进行用户识别,PHP默认情况下session id是通过cookie来保存的,因此从某种程度上来说,seesion依赖于cookie。但这不是绝对的,session id也可以通过参数来实现,只要能将session id传递到服务端进行识别的机制都可以使用session。

使用session

在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写。

session_start();
$_SESSION[‘test‘] = time();
var_dump($_SESSION);

删除与销毁session

删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。

session_start();
$_SESSION[‘name‘] = ‘jobs‘;
unset($_SESSION[‘name‘]);
echo $_SESSION[‘name‘]; //提示name不存在

使用session来存储用户的登录信息

session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等

用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储。

$_SESSION[‘uid‘] = $userinfo[‘uid‘];
$_SESSION[‘userinfo‘] = $userinfo;

一般来说,登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。

时间: 2024-11-10 13:53:53

php入门05-会话控制(session与cookie)的相关文章

PHP会话控制SESSION与COOKIE介绍

会话控制产生的背景介绍 实现用户跟踪的几个方法: 1.当前页面的变量 page 在当前页面可用,在页面执行完成之后,变量释放了. 2.两个页面之间传递变量 get 通过URL进行传值/abc.php?id=12234&age=2 能够做用户跟踪但是太繁琐. 3.会话级别 session 同一个用户在同一个网站共享自己的变量. 4.全局的 glboal 文件.数据库.任何人.任何网站我都能够使用它们.总之,会话控制其实就是许服务器跟踪同一个客户端做出的连续的请求. SESSION和COOKIE的区

PHP中的会话控制—session和cookie(实现数据传值功能)

1.session  登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器:   (2)session每个人(登陆者)存一份: (3)session有默认的过期时间:(如果登录的人过多,数据就会太多,由于存储在服务器,会给服务器造成压力,过一定的时间会清除掉) (4)session里面可以存储任意类型的数据. 由以上特点可以总结出session的特点是比较安全.缺点是对服务器造成一定的压力. (5)当一个页面需要使用session时,需要在页面

一、会话控制session、cookie

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

PHP处理会话函数session和cookie总结

本教程讲解PHP处理会话函数session和cookie总结 PHP处理会话函数包括:session_start.session_register.session_is_registered.session_unregister.Session_destroy等等.相信大家在学习php语言的时候多多少少都会对php的会话功能有所了解,下面小编给大家分享下php处理会话函数大总结. 当客户端的Cookie被禁用时,会自动通过Query_String来传递.PHP处理会话函数一共有10个,我们详细介

php会话控制(session&amp;cookie)

cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据.一般情况下,Cookie通过HTTP headers从服务端返回到客户端.多数web程序都支持Cookie的操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制. PHP通过setcookie函数进行Cookie的设置,任何从浏览器发回的Cookie,PHP都会自动的将他存储在$_COOKIE的全局变量之中,因此我们可以通过$_C

php 会话控制(禁用cookie后session为什么会失效?)

首先说明一点:session不一定必须依赖cookie,只是php默认客户端sessionid基于cookie方式保存. 到此,我想你也应该了解了php默认的session客户端保存方式是基于cookie的,所以一旦客户端禁用Cookie,那么session跨页将会失效,不知道这么描述是否合适,通俗的说无状态的东西要变的有状态,只能两边都进行比对,如果用cookie方式保存的SessionID,客户端这边的比对条件就放到cookie里,所以客户端禁用cookie,session便也会随之失效.p

php 会话控制(了解cookie与session之间的区别与联系)

相同点: 都可以在解决HTTP无状态的问题,使同一个客户端在访问网站的多次请求中,可以保存,设置信息,并且在请求事物之间建立联系. 不同点: 简单的说cookie的信息保存在客户端,session的信息保存在服务器端. Session采用键值对,也就是说ID存放客户端,而值放在服务器端,是通过用户的ID去找服务器上对应的值,这种方式值放置在服务器端,有个时间限制,时间到则服务器自动回收/释放. Cookies则有两种方法,一种方法是把值保存在浏览器的变量中,当浏览器关闭时结束,另一种方法是保存在

代码练习之 PHP会话控制 session cookie

log.html <html> <head><title>Home Page</title></head> <body> <form action="login.php" method="post"> <input type="text" name="name"> <input type="submit"

客户端(ios和android)与服务器之间的会话管理(session和cookie)

项目前提: 客户端访问服务器接口需要携带根据username和password生成的access_token, 即访问所有(除获取access_token的接口)都要携带access_token, 服务器端通过拦截器判断用户access_token是否失效等. 应用场景: 1.浏览器访问服务器获取access_token接口,通过username和password获取access_token. 2.服务器根据username和password生成access_token,并将access_tok

会话控制——session

一.session的作用与cookie的作用相似,但是最大的不同在于session是将数据存放于服务器中.另外,session的应用必须先启动(session_start()函数). 所以,在客户端仅需保存客户的sessionID,而在服务器端(文件.数据库.memcache)中保存session变量的值. 默认处理方式是使用web服务器中的的文件来记录每个用户的会话信息. 用户请求web服务器时,将sessionID的值发送给服务器,在通过sessionID取出session变量. 二.一个简