日期:2014-05-17 浏览次数:20398 次
cookie和session不管在java还是php中用的是比较多的,cookie可以看做是客户端技术,session则是服务端技术。像购物车还有网站自动登录都可以用cookie实现,session则比较偏向验证这一块,相比cookie安全性更高,因为session是存储在服务端的,不能随意删除或修改。下面来简单的分享下我的学习心得
1.cookie的使用
如果需要保存cookie可以直接在php页面直接使用setCookie函数来保存cookie使用方法如下
<?php setCookie("username","123456",time()+120); ?>
更新cookie的方法也是一样。如果是火狐浏览器我们可以看到cookie如下
下面来删除cookie
setCookie($cookiename, '');或者 setCookie($cookiename, NULL);这两种方法都能删除cookie
至于要取得cookie就更简单了,使用$_COOKIE就能取得,批量操作cookie也可以通过这个预定义超全局数组
2.session的使用
(1)启用session
(2)把对象放入session中
session_start(); $_SESSION["password"]="123456";
要取出session也是使用$_SESSION取得,删除单个session可以使用unset($_SESSION["password"]),如果是删除全部可以使用session_destroy();
session的真正原理不是那么好理解,要理解的深入也很难,需要深入的话可以使用firebug查看http的请求和响应。当服务器创建好session之后,会给客户端浏览器返回一个
PHPSESID,这个ID就是会话唯一ID.当下次浏览器客户端要取session就会通过这个唯一ID去服务器端取出session信息。如果客户端把cookie禁用了,按照正常的代码,session就不能共享了。这里提供最简单的两种做法
第一种就是URL重写,先判断是否有PHPSESSID如果有则设置session_id(SID的值);
第二种就是修改php.ini里的session.use_trans_sid把值设为1
对于第一种PHP提供了一个常量叫SID可以直接拿来使用,因为这种情况比较极端平时基本上不会遇到。具体的代码就不写了。有需要可以给我写评论,我直接给发过去。
要注意的是php的session也可以存对象,要注意的就是使用前最好把这个对象用require_once引入就好使了
最后针对session的应用,我在网上找了一个特别简单的验证码,代码如下
<?php session_start(); Header("Content-type: image/PNG"); $im = imagecreate(44,18); $back = ImageColorAllocate($im, 245,245,245); imagefill($im,0,0,$back); $vcodes = ""; srand((double)microtime()*1000000); for($i=0;$i<4;$i++){ $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255)); $authnum=rand(1,9); $vcodes.=$authnum; imagestring($im, 5, 2+$i*10, 1, $authnum, $font); } $_SESSION['VCODE'] = $vcodes; for($i=0;$i<100;$i++) { $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); } ImagePNG($im); ImageDestroy($im); ?>