会话控制session,cookie(0521)

简单介绍:

一、什么是session?

1. 定义:

      Session,在计算机中,尤其是在网络应用中,称为“会话”。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间。

      具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

      需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。

2. 特点 :

    (1) 存储在服务端     

    (2) 每个人存一份    

    (3) 可以存储任意类型的数据     

    (4) 有默认过期时间-大约15分钟

3. 用法:

     注意:session 写在php最顶端
  <?php
  session_start();   //开启session

  $_SESSION["uid"]="zhang";  //写入

  echo $_SESSION["uid"];   //获取

  ?>

4. 具体用法案例:

案例一:

  在一个页面设置好session,只要不关闭浏览器,在其他页面也可以获取

 页面一:

1 <?php
2     session_start();  //开启session
3     $_SESSION["uid"]="zhang";  //写入
4     echo $_SESSION["uid"];  //获取
5 ?>
6 
7 <a href="text.php">跳转</a>

页面二:

1 <?php
2     session_start();
3     echo $_SESSION["uid"];
4 ?>

在页面二同样可以取到session的值:"zhang"。

 

案例二:

  制作登入页面:

1. 主页面:

判断是否注册,若未注册转入登录页面,增强了安全性

 1 <body>
 2 <?php
 3 session_start();
 4 //增加安全性,防止未注册者进入
 5 if(empty($_SESSION["uid"]))
 6 {
 7     header("location:login.php");
 8 }
 9 echo $_SESSION["uid"];
10 ?>
11 </body>
12 </html>
View Code

2. 登录页面:

<body>
<h1>登录</h1>
<form action="loginchuli.php" method="post">
    <div>用户名:<input type="text" name="uid" /></div><br />
    <div>密&nbsp;&nbsp;码:<input type="text" name="pwd" /></div><br />
    <div><input type="submit" value="登录" /></div>
</form>
</body>
</html>
View Code

登陆显示界面:

 

3. 登录处理页面:

<?php
session_start();//后面用到session值,记得开启
include("../DBDA.php");
$db = new DBDA();

$uid = $_POST["uid"];
$pwd = $_POST["pwd"];

$sql = "select count(*) from Users where Uid='{$uid}' and Pwd = '{$pwd}'";

$r = $db->StrQuery($sql);

if($r==1)
{
    $_SESSION["uid"] = $uid;
    header("location:main.php");
}
else
{
    header("location:login.php");
}
View Code

 

案例三:

  添加购物车:

1. 水果展示页面:

 1 <head>
 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 3 <title>水果页面</title>
 4 </head>
 5 
 6 <body>
 7 <h1>水果页面</h1><br />
 8 
 9 <table width="100%" border="1" cellpadding="0" cellspacing="0">
10 <tr>
11     <td>水果名称</td>
12     <td>水果价格</td>
13     <td>水果产地</td>
14     <td>水果库存</td>
15     <td>操作</td>
16 </tr>
17 <?php
18 
19 include("../DBDA.class.php");
20 $db = new DBDA();
21 
22 $sql = "select * from fruit";
23 
24 $attr = $db->Query($sql,0);
25 
26 foreach($attr as $v)
27 {
28     echo "<tr><td>{$v[1]}</td>
29     <td>{$v[2]}</td>
30     <td>{$v[3]}</td>
31     <td>{$v[4]}</td>
32     <td><a href='addgwc.php?code={$v[0]}'>加入购物车</a></td></tr>";
33 }
34 
35 ?>
36 </table><br />
37 
38 <a href="gouwuche.php">查看购物车</a>
39 </body>
40 </html>
View Code

 

运行界面:

 

2. 购物车页面:

 1 <head>
 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 3 <title>购物车</title>
 4 </head>
 5 
 6 <body>
 7 <h1>购物车</h1><br />
 8 
 9 <table width="100%" border="1" cellpadding="0" cellspacing="0">
10 <tr>
11     <td>水果名称</td>
12     <td>水果价格</td>
13     <td>数量</td>
14 </tr>
15 <?php
16 session_start();
17 
18 include("../DBDA.class.php");
19 $db = new DBDA();
20 
21 $attr = $_SESSION["sg"];
22 
23 foreach($attr as $v)
24 {
25     $sql = "select Name,Price from fruit where Ids='{$v[0]}'";
26     
27     $arr = $db->Query($sql,0);
28     
29     echo "<tr><td>{$arr[0][0]}</td>
30     <td>{$arr[0][1]}</td>
31     <td>{$v[1]}</td></tr>";
32 }
33 
34 
35 ?>
36 </table>
37 </body>
38 </html>
View Code

 

运行界面:

 

3. 购物车处理页面:

 1 <?php
 2 session_start();
 3 //获取水果代号
 4 $code = $_GET["code"];
 5 
 6 
 7 //如果第一次点击
 8 if(empty($_SESSION["sg"]))//判断是否选择水果
 9 {
10     $attr = array(array($code,1));//定义二维数组,1代表第一次进入后的水果数量
11     $_SESSION["sg"] = $attr;
12 }
13 else
14 {
15     //第n次点击,n!=1
16     $attr = $_SESSION["sg"];
17     
18     //判断该水果是否已经存在
19     if(iscunzai($code))
20     {        
21         foreach($attr as $k=>$v)
22         {
23             if($v[0]==$code)            
24             {
25                 //注意这里是改变$attr的值,所以是$attr[$k][1],不能用$v,否则后面的数值不变化
26                 $attr[$k][1] = $v[1]+1;
27             }
28         }
29         
30         $_SESSION["sg"] = $attr;
31     }
32     else
33     {
34         $arr = array($code,1);
35         //array_push:将$arr里的数据存入$attr。没有返回值,不用存入变量
36         array_push($attr,$arr);
37         
38         $_SESSION["sg"] = $attr;
39     }
40 
41 }
42 
43 function iscunzai($c)
44 {
45     $attr = $_SESSION["sg"];
46     
47     $b = false;
48     
49     foreach($attr as $v)
50     {
51         $b = $b || in_array($c,$v);
52     }
53     
54     return $b;
55 }
56 
57 header("location:showlist.php");
View Code

 

 

二、什么是cookie?

1. 定义:

      “Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦阁下从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 cookie。

2. 特点:

    (1) 存储在客户端的

    (2) 每个人存一份

    (3) 只能存储字符串

    (4) 默认永不过期

3. 用法:

    setcookie("uid","zhangsan");   //设置cookie
    echo $_COOKIE["uid"];  //获取

4. 具体用法案例:

案例一:

  在一个页面设置好cookie,只要不关闭浏览器,在其他页面也可以获取

页面一

<?php
   setcookie("uid","zhangsan"); //设置COOKIE
?>

<a href="test.php">跳转</a>

页面二

<?php
    echo $_COOKIE["uid"];
?>

在页面二同样可以取到cookie的值:"zhangsan"。

posted @ 2016-05-21 22:53  陌上初薰  阅读(205)  评论(0编辑  收藏  举报