php SESSION應用實例(購物車)
SESSION應用實例
登陸範例:(請注意一定要自己敲一遍,不要CV大法)
先上一下成果圖,激起同學們寫的慾望,登入頁如下:

說明喔了,麼問題。接下來自己實作一下。
首先資料庫資訊:
新建一個名為login 的資料庫,再建立一個user 表,表格的架構如下圖:

<?php
session_start();
if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) {
$userName = $_POST['username'];
$password = $_POST['password'];
//从db获取用户信息 数据库信息改成自己的
$conn = mysqli_connect('host','username','password','login');
$res = mysqli_query($conn,"select * from user where `username` = '$username' ");
$row = mysqli_fetch_assoc($res);
if ($row['password'] == $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表,表格結構如下圖:

開始編碼吧! goodsList.php 這個是商品展示頁,效果圖如下:
說明一下,如果是第一次購買某物品,則在購物車中加入該商品資訊和計算總價,如果再次點選購買,則已購商品數量加1,總價重新計算,查看購物車連結可以到購物車頁面。
<?php
$goods = array();
//从数据库获取商品信息存入$goods二维数组
$i = 0;
//这里请换上自己的数据库相关信息
$conn = 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 此頁顯示購物車中的商品、價格、總價等資訊。 效果圖如下:

<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>購物車的例子完成了,自己親自完成一遍後是不是很有成就感! !你很厲害! !


