今回は、顧客情報入力確認画面です。
顧客情報入力確認画面
ファイル名:inputinfo_chk.php
<記述例>
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../fshopstyle.css">
<title>さかなショップお客様情報入力チェック</title>
</head>
<body>
<main>
<section class="txtbox">
<div style="text-align: center;">
<ul class="cartflow">
<li>カート</li>
<li>情報入力</li>
<li class="choice">入力確認</li>
<li>注文確定</li>
</ul>
</div>
<h3>入力内容の確認</h3>
入力内容に間違いがないかご確認の上 [注文確定] ボタンを押してください。<br>
<?php
require_once('../com_func.php');
$post=sanitize($_POST);
$cname=$post['cname'];
$email=$post['email'];
$postal=$post['postal'];
$address=$post['address'];
$tel=$post['tel'];
$note=$post['note'];
$flag1=true;
print '<table class="info"><tr><th>お名前</th>';
if($cname=='')
{
print '<td class="red">お名前が入力されていません。</td></tr>';
$flag1=false;
}
else
{
print '<td>'.$cname.'</td></tr>';
}
print '<tr><th>メールアドレス</th>';
if(preg_match('/^[\w\-\.]+\@[\w\-\.]+\.([a-z]+)$/',$email)==0)
{
print '<td class="red">正確に入力してください。</td></tr>';
$flag1=false;
}
else
{
print '<td>'.$email.'</td></tr>';
}
print '<tr><th>郵便番号</th>';
if(preg_match('/^[0-9]{7}+$/',$postal)==0)
{
print '<td class="red">半角数字7桁です。';
$flag1=false;
}
else
{
print '<td>'.substr($postal,0,3).'-'.substr($postal,3,4);
}
print '<tr><th>住所</th>';
if($address=='')
{
print '<td class="red">住所が入力されていません。</td></tr>';
$flag1=false;
}
else
{
print '<td>'.$address.'</td></tr>';
}
print '<tr><th>電話番号</th>';
if(preg_match('/^\d{2,5}-?\d{2,5}-?\d{4,5}$/',$tel)==0)
{
print '<td class="red">電話番号を正確に入力してください。</td></tr>';
$flag1=false;
}
else
{
print '<td>'.$tel.'</td></tr>';
}
print '<tr><th>備 考</th><td>'.nl2br($note).'</td></tr>';
print '</table>';
if($flag1==true)
{
if(isset($_SESSION['id'])==true)
{
$id=$_SESSION['id'];
$name=$_SESSION['name'];
$price=$_SESSION['price'];
$num=$_SESSION['num'];
$max=count($id);
}
else
{
$max=0;
}
if(count($id)==0){
print 'ショッピングカートに商品が入っていませんので';
print 'ご購入手続きができません。<br>';
print '<input type="button" onclick="history.back()" class="btn1" value=" 戻 る ">';
exit();
}
print '<h4>ショッピングカートの商品内容</h4>';
print '<form method="post" action="inputinfo_end.php">';
print '<table><tr>';
print '<td>No.</td><td>商品名</td><td>価格</td>';
print '<td>数量</td><td>小計</td></tr>';
$sum=0; $sub=0;
for($i=0; $i<$max; $i++)
{
$i1=$i+1;
print '<tr><td>'.$i1.'</td><td>'.$name[$i].'</td>';
print '<td class="right">'.number_format($price[$i]).'</td>';
print '<td class="right">'.$num[$i].'</td>';
$sub=$price[$i] * $num[$i];
$sum += $sub;
print '<td class="right">'.number_format($sub).'</td></tr>';
}
print '<tr><td colspan="4" class="right">合 計</td>';
print '<td class="right">'.number_format($sum).'</td></tr>';
print '<tr><td colspan="4" class="right">消費税</td>';
print '<td class="right">'.number_format($sum * 0.1).'</td></tr>';
print '<tr><td colspan="4" class="right">合計金額</td>';
print '<td class="right">'.number_format($sum * 1.1).'</td></tr>';
print '</table>';
print '<input type="hidden" name="cname" value="'.$cname.'">';
print '<input type="hidden" name="email" value="'.$email.'">';
print '<input type="hidden" name="postal" value="'.$postal.'">';
print '<input type="hidden" name="address" value="'.$address.'">';
print '<input type="hidden" name="tel" value="'.$tel.'">';
print '<input type="hidden" name="note" value="'.$note.'"><br>';
print '<div class="btnbox">';
print '<input type="button" onclick="history.back()" class="btn1a" value=" 戻 る ">';
print '<input type="submit" value="注 文 確 定" class="btn2r">';
print '</form>';
}
else
{
print '<span class="red">入力内容に誤りがあります。</span><br>';
print '[戻る]ボタン押して入力を訂正してください。<br>';
print '<button type="button" onclick="history.back()" class="btn1a"> 戻 る </button>';
}
?>
</section>
</main>
</body>
</html>
<表示例>

解説します。
2行目:セッションスタート
14~21行目:カートの流れを表示(入力確認を選択)
25行目:関数読み込み
26行目:フォームから送られたデータをサニタイズ
27~32行目:サニタイズしたデータを変数に代入
34行目:[$flag1]に真(true)を代入、これで入力ミスを判断
37行目:名前が入力されているか確認
40・50・60・70・80行目:入力ミスがあると[$flag1]に偽(false)を代入
47行目:[preg_match]でメールアドレスの簡易チェック
57行目:[preg_match]で郵便番号の半角数字簡易チェック
64行目:substr関数を使い郵便番号3桁-4桁の表示
67行目:住所が入力されているか確認
77行目:[preg_match]で電話番号の簡易チェック
92~95行目:セッションからカートデータを変数に代入
105・138・146行目:history.backで前の画面に戻る
inputタグで onclick属性に history.back()を指定することで、入力されたデータを保持したまま前の画面に戻ることができます。
108~130行目:カート商品を表示
138・139行目:戻るボタンと注文確定ボタンを表示
140行目:formを終了
143~147行目:入力ミスがある場合、[戻る]ボタンのみ表示
ようやく入力チェックが終わりました。
次は、最終注文確定です。
コメント