php SESSIONアプリケーション例(ショッピングカート)
SESSION申請(qǐng)例
ログイン例: (履歴書(shū)方式ではなく、自分で再度入力する必要があることに注意してください)
まず、結(jié)果グラフを見(jiàn)て、學(xué)生の書(shū)き込み意欲を刺激します。ログインページは次のとおりです:
説明、どのような問(wèn)題がありますか。次に、自分で実裝します。
最初のデータベース情報(bào):
login という名前の新しいデータベースを作成し、テーブルの構(gòu)造は次のとおりです:
login.php
<?php session_start(); if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) { $userName = $_POST['username']; $password = $_POST['password']; //從db獲取用戶信息 數(shù)據(jù)庫(kù)信息改成自己的 $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) { //密碼驗(yàn)證通過(guò),設(shè)置session,把用戶名和密碼保存在服務(wù)端 $_SESSION['username'] = $username; $_SESSION['password'] = $password; //最后跳轉(zhuǎn)到登錄后的歡迎頁(yè)面 //注意:這里我們沒(méi)有像cookie一樣帶參數(shù)過(guò)去 header('Location: welcome.php'); } } ?> <html> <head> <!-- 這里指明頁(yè)面編碼 --> <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メソッドはなく、自分で入力する必要があることに注意してください)
データベース情報(bào): testという名前のデータベースを作成します。ライブラリ內(nèi)のテーブルの構(gòu)造は次のとおりです。
コーディングを開(kāi)始してください。
goodsList.php これは商品表示ページです。レンダリングは次のとおりです。
初めて商品を購(gòu)入する場(chǎng)合は、商品情報(bào)をショッピングカートに追加し、クリックすると合計(jì)金額を計(jì)算することを説明します。再度購(gòu)入する場(chǎng)合は、商品數(shù)量に 1 を加えて、合計(jì)金額を再計(jì)算してください。ショッピング カート ページへのリンクが表示されます。
<?php $goods = array(); //從數(shù)據(jù)庫(kù)獲取商品信息存入$goods二維數(shù)組 $i = 0; //這里請(qǐng)換上自己的數(shù)據(jù)庫(kù)相關(guān)信息 $conn = mysqli_connect('host','username','password','test'); $res = mysqli_query($conn,'select * from shop'); //這里把商品信息放到$goods二維數(shù)組,每一維存的是單個(gè) //商品的信息,比如商品名、價(jià)格。 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 //取出商品信息顯示在頁(yè)面上,并添加購(gòu)買(mǎi)功能 foreach ($goods as $value) { echo ' 商品名 ' . $value['name'] . ' 價(jià)格 ' . $value['price']; echo "<a href=buy.php?name=" . $value['name'] . '&price=' . $value['price'] .">購(gòu)買(mǎi)</a>"; echo '<br />'; } ?> <a href="shoppingCart.php">查看購(gòu)物車(chē)</a> </body> </html>
buy.php このページで購(gòu)入機(jī)能が完了し、再び商品リストにジャンプします。主な目的は、セッションで商品の購(gòu)入を処理することです。
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <body> <?php //開(kāi)啟session session_start(); //獲取傳過(guò)來(lái)的商品名和價(jià)格 $name = $_GET['name']; $price = $_GET['price']; //把session中的商品信息和傳過(guò)來(lái)的(剛買(mǎi)的)商品信息對(duì)比 $goods = $_SESSION['goods']; if ($name == $goods[$name]['name']) { //買(mǎi)過(guò)的話,則總價(jià)格增加,相應(yīng)商品數(shù)量增加 $_SESSION['totalPrice'] += $price; $goods[$name]['number'] += 1; } else { //第一次買(mǎi)的話,將相應(yīng)的商品信息添加到session中 $goods[$name]['name'] = $name; $goods[$name]['price'] = $price; $goods[$name]['number'] += 1; $_SESSION['totalPrice'] += $price; } $_SESSION['goods'] = $goods; //購(gòu)買(mǎi)處理完畢后跳轉(zhuǎn)到商品列表 header('location: goodsList.php'); ?> </body> </html>
shoppingCart.php このページには、ショッピングカート內(nèi)の商品、価格、合計(jì)金額などが表示されます。
レンダリングは次のとおりです:
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <body> <?php session_start(); //將session中的商品信息(即購(gòu)物車(chē)中的商品)和總價(jià)顯示到頁(yè)面 $goods = $_SESSION['goods']; echo '您買(mǎi)了:<br />'; foreach ($goods as $value) { echo $value['name'] . ' 價(jià)格 ' . $value['price'] . ' 數(shù)量 ' . $value['number'] . '<br />'; } echo '總價(jià):' . $_SESSION['totalPrice'] . '<br />'; ?> <a href="goodsList.php">返回商品列表</a> </body> </html>
ショッピングカートのサンプルが完成したとき、自分で完成させたときの達(dá)成感を感じませんか? !あなたは上手い! !