index.phpとcart.phpは、セッション管理機能を使ってショッピングカートの基本的な処理を行う例です。
index.phpの画面で「カートに入れる」のリンクをクリックすると、その行の商品IDがGETで自分自身に送られます。index.phpはデータを受け取り、現在のセッション変数のデータを取り出した後、今回選択された商品IDをカンマ区切りで追加して、再度同じセッション変数に保存します。
一方、「カートの中味を見る」のリンクをクリックするとcart.phpの画面へページ移動します。このPHPファイルでは、カート情報の入ったセッション変数の内容を読み込み、商品名データの配列を参照しながら、カートの内容を一覧表示します。
<?php header("Content-type: text/html; charset=utf-8"); ?> <!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php if(isset($_GET["id"])){ session_start(); if($_GET["id"] == 0){ unset($_SESSION["sescart"]); } else{ $cart = ""; //if(!session_is_registered("sescart")){ if(!isset($_SESSION["sescart"])){ //session_register("sescart"); } else{ $cart = $_SESSION["sescart"]; } $cart .= (strlen($cart) == 0 ? "" : ",") . $_GET["id"]; $_SESSION["sescart"] = $cart; echo "今回カートに入れた商品IDは" . $_GET["id"] . "<br><br>"; } } ?> <table border="1"> <tr> <th>商品ID</th><th>商品名</th><th><br></th> </tr> <tr> <td>1</td><td>冷蔵庫 AB-12345</td><td><a href="<?=$_SERVER["PHP_SELF"]."?id=1"?>">カートに入れる</a></td> </tr> <tr> <td>2</td><td>エアコン AC-99999</td><td><a href="<?=$_SERVER["PHP_SELF"]."?id=2"?>">カートに入れる</a></td> </tr> <tr> <td>3</td><td>テレビ TV-A3456K-L23</td><td><a href="<?=$_SERVER["PHP_SELF"]."?id=3"?>">カートに入れる</a></td> </tr> <tr> <td>4</td><td>パソコン PC-999999 Win100G</td><td><a href="<?=$_SERVER["PHP_SELF"]."?id=4"?>">カートに入れる</a></td> </tr> <tr> <td>5</td><td>洗濯機 SK-TK2424 380L</td><td><a href="<?=$_SERVER["PHP_SELF"]."?id=5"?>">カートに入れる</a></td> </tr> <tr> <td colspan="3" align="center"><a href="<?=$_SERVER["PHP_SELF"]."?id=0"?>">カートをクリア</a></td> </tr> <tr> <td colspan="3" align="center"><a href="cart.php">カートの中味を見る</a></td> </tr> </table> </body> </html>
<?php header("Content-type: text/html; charset=utf-8"); //セッションを開始 session_start(); //if(!session_is_registered("sescart")) { if(!isset($_SESSION["sescart"])){ //セッション変数が未定義の場合 $html = "【現在、カートは空です】"; } else { //セッション変数のデータを読み込み $cart = $_SESSION["sescart"]; //商品名データを配列に代入 $product = array("冷蔵庫 AB-12345(H)" , "エアコン AC-99999(W)", "テレビ TV-A3456K-L23", "パソコン PC-999999 Win100G", "洗濯機 SK-TK2424 380L"); //現在のカート内容を列挙 $html = "【現在のカートの状況】<br><br>"; $cartarray = explode(",", $cart); foreach ($cartarray as $data) { //商品IDから商品名を取得してHTML文に追加 $html .= $product[$data - 1] . "<br>"; } } ?>. <!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?=$html?> <br> <br> <a href="index.php">戻る</a> </body> </html>