牛骨文教育服务平台(让学习变的简单)

14.5 SESSION应用实例

登陆例子:(请注意一定要自己敲一遍,不要CV大法)
首先上一下成果图,激起同学们写的欲望,登录页如下:
document/2015-09-04/55e9473ab4ec7
点击登陆之后如下:
document/2015-09-04/55e9478666a59
说明哦了,么问题。接下来自己实现一下。
首先数据库信息:
新建一个名为 login 的数据库,再建一个 user 表,表的结构如下图:
document/2015-09-04/55e9487784049
然后开始编码。
login.php

<?php
session_start();
if ( ( $_POST["username"] != null ) && ( $_POST["password"] != null ) ) {
	$userName = $_POST["username"];
	$password = $_POST["password"];

	//从db获取用户信息   数据库信息改成自己的
	$conn = mysqlo_connect("host","username","password","login");
	$res = mysqli_query($conn,"select * from user where `username` =  "$userName" ");
	$row = mysqli_fetch_assoc($res);
	if ($row["passwd"] == $password) {
		//密码验证通过,设置session,把用户名和密码保存在服务端
		$_SESSION["userName"] = $userName;
		$_SESSION["password"] = $password;

		//最后跳转到登录后的欢迎页面 //注意:这里我们没有像cookie一样带参数过去
		header("Location: welcome.php");
	}
}

?>
<html>
<head>
<!-- 这里指明页面编码 -->
<meta charset="utf-8">
</head>
<body>
	<form action="" method="POST">
		<div>
			用户名:<input type="text" name="username" />
			密  码:<input type="text" name="password" />
			<input type="submit" value="登录">		
		</div>
	</form>
</body>
</html>

welcome.php 这里我们用的是session中的信息,而不是像cookie一样在url中带参数过来

<?php
session_start();
$userName = $_SESSION["userName"];
?>
<html>
<head>
	
</head>
<body>
	welcome,<?php echo $userName;?>
</body>
</html>

购物车的例子:(请注意一定要自己敲一遍,不要CV大法)
数据库信息:建立名为test的数据库,库中有个shop表,表结构如下图:
document/2015-09-04/55e9496188de0

开始编码吧!
goodsList.php 这个是商品展示页,效果图如下:
document/2015-09-04/55e9450f14c3a
说明一下,如果是第一次购买某物品,则在购物车中加入该商品信息和计算总价,如果再次点击购买,则已购商品数量加1,总价重新计算,查看购物车链接可以到购物车页面。

<?php
	$goods = array();
	//从数据库获取商品信息存入$goods二维数组
	$i = 0;
	//这里请换上自己的数据库相关信息
	mysqli_connect("host","username","password","test");
	$res = mysqli_query($conn,"select * from shop");
	//这里把商品信息放到$goods二维数组,每一维存的是单个
	//商品的信息,比如商品名、价格。
	while ($row = mysqli_fetch_assoc($res)) {
		$goods[$i]["id"] = $row["id"];
		$goods[$i]["name"] = $row["name"];
		$goods[$i]["price"] = $row["price"];
		$i++ ;
	}

?>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
	<?php
	//取出商品信息显示在页面上,并添加购买功能
		foreach ($goods as $value) {
			echo " 商品名 " . $value["name"] . " 价格 " . $value["price"];
			echo "<a href=buy.php?name=" . $value["name"] . "&price=" . $value["price"] .">购买</a>";
			echo "<br />";
		}

	?>
	<a href="shoppingCart.php">查看购物车</a>
</body>
</html>

buy.php 此页完成购买功能,然后再次跳转到商品列表。主要是做了在session中处理购买商品操作。

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<?php
    //开启session
	session_start();
    
    //获取传过来的商品名和价格
	$name = $_GET["name"];
	$price = $_GET["price"];

    //把session中的商品信息和传过来的(刚买的)商品信息对比
	$goods = $_SESSION["goods"];
	if ($name == $goods[$name]["name"]) {
		//买过的话,则总价格增加,相应商品数量增加
		$_SESSION["totalPrice"] += $price;
		$goods[$name]["number"] += 1;
	} else {
		//第一次买的话,将相应的商品信息添加到session中
		$goods[$name]["name"] = $name;
		$goods[$name]["price"] = $price;
		$goods[$name]["number"] += 1;
		$_SESSION["totalPrice"] += $price;
	}

	$_SESSION["goods"] = $goods;
	//购买处理完毕后跳转到商品列表
	header("location: goodsList.php");
?>
</body>
</html>

shoppingCart.php 此页展示购物车中的商品、价格、总价等信息。
效果图如下:
document/2015-09-04/55e945fc2e667

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<?php
session_start();
//将session中的商品信息(即购物车中的商品)和总价显示到页面
$goods = $_SESSION["goods"];
echo "您买了:<br />";
foreach ($goods as $value) {
	echo $value["name"] . " 价格 " . $value["price"] . " 数量 " . $value["number"] . "<br />";
}
echo "总价:" . $_SESSION["totalPrice"] . "<br />";

?>
<a href="goodsList.php">返回商品列表</a>
</body>
</html>

购物车的例子完成了,自己亲自完成一遍后是不是很有成就感!!你很厉害!!