日期:2014-05-17  浏览次数:20560 次

php基础知识(3)-会话使用
php基础知识-会话使用

示例代码下载页http://xieye.iteye.com/blog/1336095(在附件)

会话是指:服务器对同一个用户在一段时间内的各种连接的识别。

会话原理,有多种,但实际上主要是cookie。

cookie原理:web协议规定,服务器返回请求时可以将一小部分数据存在浏览器客户端,浏览器在下次往同域名服务器请求信息时,会
同时自动把该段信息再发送给服务器,而这一切是对用户透明的,用户不需要理解这些东西可以照常上网。
cookie的一个特点是,服务器存客户端时可以带有时间参数,浏览器会根据这个参数决定cookie是否过期来处理,如果过期了,这个cookie就
不会到服务端。
cookie的另一个特点是多个名称和值的组合。

php实现会话的机制:
php会话开启有两种途径:
一种设置php.ini里的大约1014行
session.auto_start = 0;
改为1的话,会话会自动开启。

第二种方法是使用session_start()函数。

在现实应用中,一般都取消配置文件中的自动开启,而手动使用函数开启会话。

开启了会话之后,
假如客户端没有传来一个称为PHPSESSID的cookie的话,那么服务端会在返回时自动发送该名称的cookie给用户,值是随机的一串乱码
并在服务器的会话目录中建一个文件,名字是名为PHPSESSID的cookie的值,内容为空。

假如客户端传来一个名为PHPSESSID的cookie,则服务器会按照该cookie的值到会话目录中找到对应文件,并把值取出放进会话全局数组中,
程序可以随意读取。

可以简单理解为php会话是以(名为phpsessid的cookie的值)这个文件名对应的文件里的内容。

对于php程序开发的网站,在不做特殊修改php配置的情况下,
用户把浏览器关闭,再打开,一般来说会生成新的会话。原因是php发送的cookie默认浏览器关闭则cookie过期

程序还可以随意的修改会话里的内容。


会话应用,登录,注册等。

例子1:展示,不使用数据库,使用会话来记住客户在网站中留下的痕迹。
http://localhost/command/peixun/session/6.php
可以点击文章查看,点击任意文章(例子就两篇)查看后,再点击返回,
可以发现系统能够记录用户查看过的文章,使用的是会话。
说明:如果浏览器关闭,就不行了,如果想长期保存,则需要用户登录机制,且保存在数据库。
      存cookie方案不推荐,因为cookie容量最多2K,实在是太小了。
 

代码可下载
6.php
<?php
//会话的第一个例子
require_once('../Public/CommandLine.php');

session_start();

if (!isset($_SESSION['news'])) {
    $_SESSION['news'] = array();
}

echo '
 请查看文章
 <ul>
   <li><a href="7.php">多家银行否认用户资料外泄 工信部要求网站自查</a></li>
   <li><a href="8.php">春运火车票开售 各地开设网络购票换票窗口</a></li>
   
 </ul>
最近看过的文章列表
<br />

<ul>
';


foreach ($_SESSION['news'] as $value) {
    echo '<li>' . $value ."</li>";
}
echo '</ul>';




7.php
<?php
//会话的第1个例子
require_once('../Public/CommandLine.php');

session_start();

$_SESSION['news'][] = '多家银行否认用户资料外泄 工信部要求网站自查('.date('Y-m-d H:i:s') .')';
$html = <<<longs
<html>
  <h2>多家银行否认用户资料外泄 工信部要求网站自查</h2>
  本报讯 (记者林其玲 阳淼 李媚玲 苏曼丽)互联网用户数据泄密事件继续发酵。继CSDN、天涯、新浪等互联网公司后,京东商城、网易公司、支付宝也被卷入“泄密门”。昨日又有网友爆料称,交通银行和民生银行用户资料也遭外泄。

昨日中午,有爆料称交通银行7000万客户、民生银行3500万用户以及工行用户资料外泄,泄露数据包括用户的姓名、卡号、密码等敏感信息,并发布信息截图。



<br >
<a href="6.php">返回列表页</a>

</html>

longs;

echo $html;


8.php
<?php
//会话的第一个例子
require_once('../Public/CommandLine.php');

session_start();

//if (!isset($_SESSION['news'])) {
//    $_SESSION['news'] = array('春运火车票开售 各地开设网络购票换票窗口');
//}
$_SESSION['news'][] = '春运火车票开售 各地开设网络购票换票窗口('.date('Y-m-d H:i:s') .')';
$html = <<<longs
<html>
  <h2>春运火车票开售 各地开设网络购票换票窗口</h2>
  中广网综合报道 今天(29日)是各地列车春运订票的第一天,又是启动网络购票第一年,各大火车站迎来售票高峰。各地记者实地体验多途径购票,看看今年网络购票能不能解决买票难题。

  武汉高校火车票预售期调整为28天 学生青睐窗口买票



  <br >
<a href="6.php">返回列表页</a>
  </html>

longs;

echo $html;