首页 » 建站技术 » PHP 技术 » 浏览内容

[Monkey's PHP教程] 第八章 cookie与session


2006-09-07 16:02:59 4,892 0 发表评论 字体: 作者:C.K.
标签: 教程

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From:http://lesson.phpso.com/article.php?1484.html

  在很多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用一组变量来“追随”访客。实现变量“追随”有很多种方法,比较用得多的是cookie和session。

一 Cookie

  Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到客户端。在Cookie生效之后及失效之前,客户每次发出页面请求的时候,都会把Cookie一块发送到服务器,只要我们针对它进行相应的处理,就可以实现变量“追随”。

设置一个Cookie变量
int setcookie(string name, string value, int expire,
string path, string domain, int secure);

  参数 name 表示 cookie 的名称;
  value 表示这个 cookie 的值,这个参数为空字串则表示取消浏览器中该 cookie 的资料;  
  expire 表示该 cookie 的有效时间;
  path 为该 cookie 的相关路径;
  domain 表示 cookie 的网站;
  secure 则需在 https 的安全传输时才有效。

  例如我们要设置一个变量username,它的值是字符串“bluewind”,我们可以这么写代码:
   setcookie (“username”,“bluewind”); //这两个参数是setcookie必要的。
  我们还想给这个变量设置有效时间来限制操作超时等,比如说10分钟:
   setcookie (“username”,“bluewind”, 600000); //有效时间的单位是毫秒。
  注意:setcookie和header函数一样,需要放在任何能向客户端输出的语句之前。
销毁Cookie变量只要将它的value设为空(“”)就可以了,如想销毁上面那个变量只要再写一次:
   setcookie (“username” ,“”);

二 Session

   所谓session是微软首先提出的,在asp中最先集成。由于session的采用,大大方便了web开发员的工作。一时间asp风靡全球。现在php4也加入session的支持,再度显示出open source 的强大力量。和Cookie类似,设计Session的目的也是为了在一个访问期间在不同的页面间传输数据以解决http协议无状态的问题,但Session更加简单、更加安全。Session 中文没有一个统一的译法,我习惯上译为会话。关于session的意义大家都应该清楚: 其实是在浏览某个网站时,在浏览器没有关闭的情形之下,一个web应用的开始和结束。一个session可以包括数次http的请求和应答,比如我们用freemail.263.net,从login到logout或者超时就作为一个session 的生存期。每一个被创建的Session都有一个唯一的标识串,叫session ID , 这个串被发送到客户端,同时在服务器端也生成了同样唯一的标识串入口,这个标识串或者放在文本文件中,或者放在一个数据库中。然后程序可以在这个sessionID下注册一些Session 变量。这些变量如同一般的变量一样可以保存文本或数值信息,可以通过Session被读出或写入。 session 的唯一标识一般是在系统内部唯一的session ID,一般是一个挺长的字符串。

从一个例子开始:

例一
test.php
———–

session_start();
session_register(var); //注册变量var
$var=”这是SESSION变量的值”; //var变量已经被作为session变量
?>

est1.php
——

PHP代码:

session_start();
session_register(var);
echo $var; //输出:“这是SESSION变量的值”
?>

  如果PHP的设置自动session并没有开启的话,需要使用session_start()函数来初始化一个session,这个函数的用法如下:
   boolean session_start(void);
  它的作用是初始化一个新的 Session,若该客户已在 Session 之中,则连上原 Session。本函数没有参数,且返回值均为 true。
  你要在session保存的变量都必须使用下列函数对变量进行注册:
   boolean session_register(string name);
  本函数在全局变量中增加一个变量到目前的 Session 之中。参数 name 即为欲加入的变量名。成功则返回true 值。
  然后你就可以直接使用变量名对它进行赋值,这个值就会被保存下来。
如果你只是想注销一个变量而不是摧毁整个变量的话,那需要使用函数:
   boolean session_unregister(string name);

例二

PHP代码:

session_start();
session_register('count');
$count++;
echo $count;
?>

  在浏览器反复刷新此页面文件,会发现数字在一点一点地增加。但是如果你关闭窗口在打开此文件后,便会重新清零。
  当然,现在的PHP版本中,你可以不用session_register,而直接使用$_SESSION的Session数组,当使用此数组时,Session变量将自动注册。

PHP代码:

session_start();
echo $_SESSION[count]++;
?>

例三

PHP代码:

session_start(); // 启动Session
session_register('count'); // 注册Session变量Count
if(isset($PHPSESSID)) { // 如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID
session_id($PHPSESSID);
}
$PHPSESSID = session_id(); // 取得当前的SessionID
$count++; // 变量count加1
setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 储存SessionID到Cookie中
echo $count; // 显示Session变量count的值
?>

这是一个把Session与Cookie相结合的方法,可以让你的session永远生效,就算你你关闭浏览器同样生效。

网站统计 Statistics

  • 创建时间: 2005年1月3日 距今5067 天
  • 日志总数: 2461
  • 评论总数: 630
  • 标签总数: 654
  • 链接总数: 273
  • 最后更新: 2018-8-31 17:57:04
  • 您是本站第 14172391 位访客

广告区 Guǎng Gào