php SESSION 적용 예시(장바구니)
SESSION 적용 예시
로그인 예시: (CV 방식이 아닌 직접 입력해야 합니다.)
먼저 결과 차트를 보고 학생들의 글쓰기 욕구를 자극하세요.
문제가 무엇인지 설명해주세요. 다음으로 직접 구현해 보세요.
첫 번째 데이터베이스 정보:
login이라는 이름의 새 데이터베이스를 생성한 후, 테이블의 구조는
login과 같습니다. php
<?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 여기서는 쿠키와 같은 URL에 매개변수를 가져오는 대신 세션의 정보를 사용합니다.
<?php session_start(); $username = $_SESSION['username']; ?> <html> <head> </head> <body> welcome,<?php echo $username;?> </body> </html>
장바구니 예: (반드시 입력해야 합니다. CV Dafa는 하지 마세요)
데이터베이스 정보: test라는 데이터베이스를 만듭니다. 라이브러리에 shop 테이블이 있습니다. 테이블 구조는 다음과 같습니다.
Let's code를 시작해 보세요!
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 구매 기능을 완료한 후 다시 상품 목록으로 이동하는 페이지입니다. 주요 목적은 세션에서 상품 구매를 처리하는 것입니다.
<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>
장바구니 예시가 완성된 후 직접 완성해본 성취감을 느끼지 않으시나요? ! 당신은 괜찮아요! !