$_session (应用)

登录:

封装类(用于连接数据库)代码中创建一个对象最好可以重复使用

 1 <?php
 2 class DBDA
 3 {
 4     public $host="localhost";
 5     public $uid = "root";
 6     public $pwd = "123";
 7     public $dbname = "mydb";
 8
 9     //成员方法
10     public function Query($sql,$type=1)
11     {
12         $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
13         $r = $db->query($sql);
14
15         if($type==1)
16         {
17             return $r->fetch_all();
18         }
19         else
20         {
21             return $r;
22         }
23     }
24 }

DBDA.class.php

1.登陆界面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<form action="loginchuli.php" method="post">
    <div>用户名:<input type="text" name="uid" /></div>
    <div>密码:<input type="password" name="pwd" /></div>
    <input type="submit" value="登录" />
</form>
</body>
</html>

login.php

2.登陆处理界面(纯PHP代码) 注意 使用session  判断 (目的不能绕过 登陆界面直接加载该页面)

 1 <?php
 2 session_start();
 3 include("../fengzhuang/DBDA.class.php");
 4 $db = new DBDA();
 5
 6 $uid = $_POST["uid"];
 7 $pwd = $_POST["pwd"];
 8
 9 $sql = "select pwd from users where uid=‘{$uid}‘";
10 $attr = $db->Query($sql);
11
12 $mm = $attr[0][0];
13
14 if(!empty($pwd) && $pwd==$mm)
15 {
16     $_SESSION["uid"] = $uid;
17     header("location:main.php");
18 }
19 else
20 {
21     echo "登录失败!";
22 }

loginchuli.php

3.主界面

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>无标题文档</title>
 6 </head>
 7 <?php
 8 session_start();
 9 //echo $_SESSION["uid"];
10
11 if(empty($_SESSION["uid"]))
12 {
13     header("location:login.php");
14     exit;
15 }
16
17 $uid = $_SESSION["uid"];
18 include("../fengzhuang/DBDA.class.php");
19 $db = new DBDA();
20 $sql = "select name from users where uid=‘{$uid}‘";
21 $attr = $db->Query($sql);
22
23 ?>
24 <body>
25 <?php
26 echo "<h1>欢迎登录:{$attr[0][0]}</h1>";
27
28 ?>
29 </body>
30 </html>

main.php

------------------------加入购物车------------------------------------

1.购物界面

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>无标题文档</title>
 6 </head>
 7
 8 <body>
 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 include("../fengzhuang/DBDA.class.php");
19 $db = new DBDA();
20
21 $sql = "select * from fruit";
22 $attr = $db->Query($sql);
23
24 foreach($attr as $v)
25 {
26     echo "<tr>
27         <td>{$v[1]}</td>
28         <td>{$v[2]}</td>
29         <td>{$v[3]}</td>
30         <td>{$v[4]}</td>
31         <td><a href=‘jia.php?code={$v[0]}‘>加购物车</a></td>
32     </tr>";
33 }
34
35
36 ?>
37 </table>
38
39 </body>
40 </html>

shuiguo.php

2.加入购物车 操作 [注意数组处理][也可以把二维数组遍历  转化为 一维数组  一维数组 使用 转化为 字符串 储存在新数组里面   再把新的数组转化为字符串最后用 test 方法 (正则里面学的)检测是否存在

 1 <?php
 2 session_start();
 3 //将传过来的水果加到购物车
 4 $code = $_GET["code"];
 5
 6 //$_SESSION["gwc"];
 7
 8
 9 //1.如果是第一次点击加购物车,做一个二维数组扔到SESSION里
10
11 //2.如果不是第一次点击加购物车并且该水果第一次点击,做一个该水果的一维数组扔到SESSION的二维数组里面
12
13 //3.如果不是第一次点击加购物车并且该水果不是第一次点击,将SESSION数组里面该水果的数量加1
14
15
16 if(empty($_SESSION["gwc"]))
17 {
18     //1.如果是第一次点击加购物车,做一个二维数组扔到SESSION里
19     $attr = array(
20         array($code,1)
21     );
22
23     $_SESSION["gwc"] = $attr;
24 }
25 else
26 {
27     //判断该水果代号是否在SESSION数组里面出现
28     $attr = $_SESSION["gwc"];
29     if(PanDuan($code,$attr))
30     {
31         //3.如果不是第一次点击加购物车并且该水果不是第一次点击,将SESSION数组里面该水果的数量加1
32         /*foreach($attr as $v)
33         {
34             if($code == $v[0])
35             {
36                 $v[1] = $v[1]+1;
37             }
38         }*/
39         for($i=0;$i<count($attr);$i++)
40         {
41             if($code == $attr[$i][0])
42             {
43                 $attr[$i][1]++;
44             }
45         }
46         $_SESSION["gwc"]=$attr;
47     }
48     else
49     {
50         //2.如果不是第一次点击加购物车并且该水果第一次点击,做一个该水果的一维数组扔到SESSION的二维数组里面
51         $arr = array($code,1);
52         $attr[] = $arr;
53         $_SESSION["gwc"]=$attr;
54     }
55
56 }
57
58
59 var_dump($_SESSION["gwc"]);
60
61 //判断v是不是在arr里面出现
62 function PanDuan($v,$arr)
63 {
64     $n = 0;
65     foreach($arr as $a)
66     {
67         if($v == $a[0])
68         {
69             $n++;
70         }
71     }
72
73     if($n==0)
74     {
75         return false;
76     }
77     else
78     {
79         return true;
80     }
81 }

jia.php

--------------------基础知识---------------------

<?php
session_start(); //开启SESSION
?>

<?php 

会话保持
1.session
特点:
(1)有默认过期时间,大约15分钟
(2)存储在服务器的,每个人存一份
(3)可以存储任意类型数据
用法:
使用session的页面最上端需要加session_start();
赋值$_SESSION["uid"]="zhangsan";
取值$_SESSION["uid"];

2.cookie
特点
(1)存储在客户端的
(2)没有过期时间
(3)只能存储字符串类型的数据
用法:
赋值:setcookie("uid","lisi");
取值:$_COOKIE["uid"];

$_SESSION["uid"]="zhangsan";

setcookie("uid","lisi");

echo $_SESSION["uid"];

?>

  

时间: 2024-08-06 07:57:57