background image

2.1 sessionID 的传送
2.1.1 通过 cookie 传送 sessin ID
     使用 session_start()调用 session,

服务器

在生成 session 文件的同时,生成 session ID

哈 希 值 和 默 认 值 为 PHPSESSID 的 session name, 并 向 客 户 端 发 送 变 量 为 ( 默 认 的
是)PHPSESSID(session name),值为一个 128 位的哈希值.

服务器

将通过该 cookie 与客户端

进行交互.

   session 变量的值经

php  

部系列化后保存

服务器

器上的文本文件中,和客户端

的变量名默认情况下为 PHPSESSID 的 coolie 进行对应交互.

          即

服 务 器

自 动 发 送 了 http 头 :header('Set-Cookie: session_name()=session_id(); 

path=/');
即 setcookie(session_name(),session_id());

    当从该页跳转到的新页面并调用 session_start()后,PHP 将检查与给定 ID 相关联的

服务器

存贮的 session 数据,如果没找到,则新建一个数据集.

2.1.2 通过 URL 传送 session ID
只有在用户禁止使用 cookie 的时候才用这种方法,因为浏览器 cookie 已经通用,为安全

起见,可不用该方法.
<a href="p.php?<?php print session_name() ?>=<?php print session_id() ?>">xxx</a>,也可以通
过 POST 来传递 session 值.

2.2 session 基本用法实例
<?

php

// page1.

php

session_start();
echo 'Welcome to page #1';
/* 创建 session 变量并给 session

 

变量赋值 */

$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// 如果客户端使用 cookie,可直接传递 session 到 page2.

php

echo '<br /><a href="page2.php">page 2</a>';
// 如果客户端禁用 cookie
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
/*
 默认

php

5.2.1 下,SID 只有在 cookie 被写入的同时才会有值,如果该 session

 对应的 cookie 已经存在,那么 SID 将为(未定义)空
 */
?>
<?

php

// page2.

php

session_start();
print $_SESSION['animal']; // 打印出单个 session
var_dump($_SESSION); // 打印出 page1.

php  

过来的 session 值

?>

2.3 使用 session 函数控制页面缓存.
    很多情况下,我们要确定我们的网页是否在客户端缓存,或要设置缓存的有效时间,