Home >Backend Development >PHP Tutorial > PHP中使用cookie跟session

PHP中使用cookie跟session

WBOY
WBOYOriginal
2016-06-13 12:36:37892browse

PHP中使用cookie和session

cookie和session不管在java还是php中用的是比较多的,cookie可以看做是客户端技术,session则是服务端技术。像购物车还有网站自动登录都可以用cookie实现,session则比较偏向验证这一块,相比cookie安全性更高,因为session是存储在服务端的,不能随意删除或修改。下面来简单的分享下我的学习心得

1.cookie的使用

如果需要保存cookie可以直接在php页面直接使用setCookie函数来保存cookie使用方法如下

<?php setCookie("username","123456",time()&#43;120);
?>

第一个参数是cookie的键,第二个则是value,第三个表示该cookie什么时候过期单位是秒,time()表示当前时间。这句代码的意思是该cookie在2分钟会过期

更新cookie的方法也是一样。如果是火狐浏览器我们可以看到cookie如下


下面来删除cookie

setCookie($cookiename, '');或者 setCookie($cookiename, NULL);这两种方法都能删除cookie

至于要取得cookie就更简单了,使用$_COOKIE就能取得,批量操作cookie也可以通过这个预定义超全局数组

2.session的使用

(1)启用session

(2)把对象放入session中

 session_start();
  $_SESSION["password"]="123456";

两句话就可以把sessiona保存起来了,就像下面这样

要取出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&#43;&#43;){
    $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255)); 
    $authnum=rand(1,9);
    $vcodes.=$authnum;
    imagestring($im, 5, 2&#43;$i*10, 1, $authnum, $font);
    }
    $_SESSION['VCODE'] = $vcodes;

    for($i=0;$i<100;$i&#43;&#43;) 
    {
    $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
    imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); 
    }
    ImagePNG($im);
    ImageDestroy($im);
?>

具体怎么用就不用解释了吧得意

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn