cookie

服务器在客户端保存用户的信息,就要用到cookie。Cookie在客户机(浏览器)就是一个字符串,可以通过setcookie("name","张三",time()+3600)进行创建,$_COOKIE[‘cookie的名字’]读取

     什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
     会话过程中要解决的一些问题? 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据。例如:多个用户点击超链接通过一个php各自购买了一个商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方,以便于这些用户点结帐php时,结帐php可以得到用户各自购买的商品为用户结帐。 提问:这些数据保存在什么地方?
    大家在访问某个网站的时候,是否能看到提示你上次登录网站的时间,而且要注意的是不同用户上次登录的时间肯定是不一样的,这是怎么实现的?

一、cookie技术
   Cookie(小甜饼)是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

    服务器在客户端保存用户的信息,比如登录名,密码等..就是cookie,这些信息就像是小甜饼一样,数据量并不大,服务器端在需要的时候可以从客户端读取,保存在客户端的浏览器缓存目录下,可以通过右边的图来理解。

二、cookie可以用来做什么
1: 保存上次登录时间等信息。
2: 保存用户名、密码,在一定时间不用重新登录。
3: 记录用户访问网站的喜好(比如有无背景音乐、网页的背景色是什么。
4: 网站的个性化,比如定制网站的服务,内容。

三、cookie基本使用 
1: Cookie在客户机(浏览器)就是一个字符串,其形式如下:
name2 zhansan localhost/cookie/ 1024414383692830177007251247529630176999*
2: 如何创建一个Cookie(在服务端创建的)
 bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
3: 如何读取cookie(从客户端读到服务器)
$_COOKIE[‘cookie的名字’];
4: 如何删除一个cookie值
     要删除 cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机制。 

###### cookie信息保存在客户端的 ~登录用户名/Cookies 隐藏目录下。
######$_COOKIE[] 是php的一个预定义超全局数组.

******cookie1.php*****

<?php
 //演示如何创建cookie
  setcookie("name","张三",time()+3600);
   setcookie(“name2”,”李四”,time()+3600);
 echo 'cookie创建成功!';
?>
*****cookie2.php******
<?php
  //显示所有cookie,通过自动全局数组来搞定
 print_r($_COOKIE);
 //如何取出某个cookie
 $my_name=$_COOKIE['name'];
 echo '名字是='.$my_name;
?>
****cookie4.php(如何删除cookie值)*******************
<?php
 //演示如何创建cookie。
 setcookie("name","",time()-3600);
 //也可以这样删除,只要保证cookie时间过期即可。
 setcookie(“name”);
 echo 'cookie删除成功!';
?>

删除cookie信息:指定删除某个 key<==>value,删除所有的 key<===>value。

<?php
 //指定删除某一个 key<==>val
 //如果要删除某个key 只需要把 time()-秒数
 setCookie("name","",time()-200);
 echo "删除name key成功!";
 //如何删除所有的
 foreach($_COOKIE as $key=>$val){
  setCookie($key,"",time()-100);
 }
 echo "删除所有cookie成功!";
?>

如果你删除的 cookie的 key<==>value 没有删除完,则这个cookie在客户端保留,如果你把这个网站的所有cookie都删除,则浏览器会把 cookie文件删除.

四、setcookie 函数参数一览表

软件设计,PHP教程


软件设计,PHP教程

显示用户上次访问时间
*****cookie3.php(获取上一次访问网页时间,如果是第一次访问则给出提示.)****

<?php
 //获取上次登录的时间
 $lvt=$_COOKIE['last_visit_time'];
 if($lvt==null){
  //把这次访问的时间写入cookie,并保存到客户端浏览器缓存中
  date_default_timezone_set('PRC');
  setcookie('last_visit_time',date("Y-m-d H:i:s"));
  echo '您是第一次访问本站.';
 }else{
  //更新最新时间
  date_default_timezone_set('PRC');
  setcookie('last_visit_time',date("Y-m-d H:i:s"));
  echo '您上次登陆实际是:'.$lvt;
  
 }
?>

应用:


<?php
 //演示如何创建cookie信息
 //把用户名和密码保存到客户端的cookie
 //这个函数用于保存cookie
 //第一个参数表示cookie一个key 第二个参数表示 val,第三个参数表示cookie值。
 //客户端保存时间,按秒计算
 // key <-->value
 // key <--->value
 //.....
 setCookie("name","zhansan",time()+3600);
 setCookie("password","12345",time()+30);
    setCookie("address","北京",time()+300);
 echo "保存成功!";
?>

对代码说明:
1)当浏览器访问  cookie1.php页面的时候,我们的服务器就会以Set-Cookie: name=shunping; expires=Wed, 21-Sep-2011 07:53:25 GMT 回送http响应,当浏览器获取到该信息后,就会保存该cookie 的新到。本机的  c:/xxx/admin/cookies文件。
2)如果我们如果没有该时间(第三个参数)
cookie不会保存到客户端,当浏览器的会话结束,我们的cookie就失效。
3)cookie能保存什么样的信息,就是字符串。
4)客户端可以保存多个 key<==>value 对。
5)cookie也可以保存中,默认将会对中文进行 urlencode进行编码。
6)cookie 可以有多个 键<==>值 对,可以给不同的键值 ,指定不同的有效时间。


如何从客户端获取保存的cookie信息
代码:


<?php
 //获取cookie信息
 echo "<pre>";
 print_r($_COOKIE);
 echo "</pre>";
 //获取指定的key对应的值
 $name=$_COOKIE['name'];
 echo "name=".$name;
?>

对代码说明:如果cookie有效时间到,则不能取出。客户端cookie信息是怎样传递给服务器通过 http协议的。Cookie: name=shunping。这个机制是http协议 规定。


五、cookie 细节
一个Cookie只能标识一种字符串信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
    如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用expire,并给出一个以秒为单位的时间。要删除 cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机制。
实际运用:如果用户是第一次访问该页面,则提示,你是第一次访问该页面,如果第二次后,则显示上次登陆时间。
在雇员管理系统中增加:登录empManage.php页面时候,显示该用户登录的上一次时间。
在使用显示上次登陆时间的方法的时候,会提示一个时区错误:
需要我们设置时区:在php文件中设置:
date_default_timezone_set("Asia/Chongqing");
在php.ini文件中:date.timezone = Asia/Chongqing
完成新的功能:打开登录页面的时候,自动填写该用户的用户名和密码。

loginProcess.php
//3. 获取用户是否选中了保存id


 if(empty($_POST['keep'])){
  if(!empty($_COOKIE['id'])){
  setcookie("id",$id,time()-100);
  }
 }else{
  setcookie("id",$id,time()+7*2*24*3600);
 }

在common.php添加一个函数

function getCookieVal($key){
  if(empty($_COOKIE[$key])){
   return "";
  }else{
   return $_COOKIE[$key];
  }
 }

在login.php中添加了

value="<?php echo getCookieVal("id"); ?>"

转载自http://www.by-sj.com/WebRes/Pro780.html


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值