php部分--session的三种用法

一.在不同页面之间显示用户的信息

二.控制登录

1.登录页面

<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>

2、登录处理页面

<?php

session_start();

include("DBDA.class.php");

$db = new DBDA();

$uid = $_POST["uid"];

$pwd = $_POST["pwd"];

$sql = "select pwd from users where u"; //通过用户名,判断密码

$attr = $db->Query($sql);

$mm = $attr[0][0]; //取出密码

if(!empty($pwd) && $pwd==$mm)

{

$_SESSION["uid"] = $uid; //如果登录成功,把取到的用户名放到session保存,跳转到主页面

header("location:main.php");

}

else

{

echo "登录失败!";

}

3、主页面

</head>

<?php

session_start();

if(empty($_SESSION["uid"])) //判断session里面是不是存储到值,如果没有存储,让其跳转到登录界面

{

header("location:login.php");

exit;

}

$uid = $_SESSION["uid"]; //如果能够取到,通过session取到的用户名,显示下面的信息

include("DBDA.class.php");

$db = new DBDA();

$sql = "select name from users where u";

$attr = $db->Query($sql);

?>

<body>

<?php

echo "<h1>欢迎登录:{$attr[0][0]}</h1>";

?>

三、做购物车

1.调水果表的信息

<body>

<table width="100%" cellpadding="0" cellspacing="0">

<tr>

<td>名称</td>

<td>价格</td>

<td>产地</td>

<td>库存</td>

<td>操作</td>

</tr>

<?php

include("DBDA.class.php");

$db = new DBDA();

$sql = "select * from fruit";

$attr = $db->Query($sql);

foreach($attr as $v)

{

echo "<tr>

<td>{$v[1]}</td>

<td>{$v[2]}</td>

<td>{$v[3]}</td>

<td>{$v[4]}</td>

<td><a href='jia.php?code={$v[0]}'>加购物车</a></td> //添加购物车选项

</tr>";

}

?>

</table>

2.将传过来的水果加到购物车

三条思路:

//1.如果是第一次点击加购物车,做一个二维数组扔到SESSION里

//2.如果不是第一次点击加购物车并且该水果第一次点击,做一个该水果的一维数组扔到SESSION的二维数组里面

//3.如果不是第一次点击加购物车并且该水果不是第一次点击,将SESSION数组里面该水果的数量加1

<?php

session_start();

$code = $_GET["code"];

if(empty($_SESSION["gwc"]))

{

//1.如果是第一次点击加购物车,做一个二维数组扔到SESSION里

$attr = array(

array($code,1) //建立一个二维数组,并在里面的一位数组中添加代号和数量1

);

$_SESSION["gwc"] = $attr; //把新建立的二维数组,添加到session中

}

else

{

//判断该水果代号是否在SESSION数组里面出现

$attr = $_SESSION["gwc"]; //如果session里面有内容,则把内容给一个二维数组

if(PanDuan($code,$attr)) //下面见了一个PanDuan的方法,用来判断代号是不是已经存在session里

{

//3.如果不是第一次点击加购物车并且该水果不是第一次点击,将SESSION数组里面该水果的数量加1

/*foreach($attr as $v)

{

if($code == $v[0])

{

$v[1] = $v[1]+1;

}

}*/

for($i=0;$i<count($attr);$i++) //取数组的长度用count()

{

if($code == $attr[$i][0])

{

$attr[$i][1]++;

}

}

$_SESSION["gwc"]=$attr;

}

else

{

//2.如果不是第一次点击加购物车并且该水果第一次点击,做一个该水果的一维数组扔到SESSION的二维数组里面

$arr = array($code,1);

$attr[] = $arr;

$_SESSION["gwc"]=$attr;

}

}

var_dump($_SESSION["gwc"]);

//判断v是不是在arr里面出现

function PanDuan($v,$arr) //判断方法

{

$n = 0;

foreach($arr as $a)

{

if($v == $a[0])

{

$n++;

}

}

if($n==0)

{

return false;

}

else

{

return true;

}

}