Blockchain code Metaverse VR

Unity×VR×Blockchain(264)

スポンサーリンク

//tips

//php理解

注文フォームの入力フォームを確認するスクリプトを作成していく。

数字表記部分は正規表記できちんとチェックを行なっている。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

</head>
<body>

<?php

require_once('../common/common.php');

$post=sanitize($_POST);

$onamae=$post['onamae'];
$email=$post['email'];
$postal1=$post['postal1'];
$postal2=$post['postal2'];

$address=$post['address'];
$tel=$post['tel'];

if($onamae==''){
print 'お名前が入力されていません<br/><br/>';

}

if(preg_match('/^[a-zA-Z0-9_.+-]+[@][a-zA-Z0-9.-]+$/',$email)==0){

print 'メールアドレスを正確に入力してください<br/><br/>';

}

if(preg_match('/^(([0-9]{3}-[0-9]{4})|([0-9]{7}))$/',$postal1)==0){

print '郵便番号を正確に入力してください<br/><br/>';

}

if(preg_match('/^(([0-9]{3}-[0-9]{4})|([0-9]{7}))$/',$postal2)==0){

print '郵便番号を正確に入力してください<br/><br/>';

}

if($address==''){
print '住所が入力されていません<br/><br/>';

}

if(preg_match('/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$/',$tel)==0){

print '電話番号を正確に入力してください<br/><br/>';

}

print'<form method="post" action="shop_form_done.php">';
print'<input type="hidden" name="onamae" value="'.$onamae.'">';
print'<input type="hidden" name="email" value="'.$email.'">';
print'<input type="hidden" name="postal1" value="'.$postal1.'">';
print'<input type="hidden" name="postal2" value="'.$postal2.'">';
print'<input type="hidden" name="address" value="'.$address.'">';

print'<input type="button" onclick="history.back()" value="戻る">';
print'<input type="submit" value="OK"><br/>';
print'</form>';

?>

</body>
</html>

郵便番号部分でエラーが生じたので正規表現は数字のみに/^[0-9]+$/変更。

正規表現10選!!とにかくよく使うパターンをまとめました

電話番号は先頭が「0」で残り9桁または10桁の半角数字が続く形/^0\d{9,10}$/に変更。

これで問題なく対応できるようになった。

https://qiita.com/ken97/items/9276f59f3148bb8fbe67

さらに表示も加え、ミスがあった場合には戻るボタンのみを表示するフラグを組み込む。boolを利用しているだけなのでそこまで難しくない。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

</head>
<body>

<?php

require_once('../common/common.php');

$post=sanitize($_POST);

$onamae=$post['onamae'];
$email=$post['email'];
$postal1=$post['postal1'];
$postal2=$post['postal2'];

$address=$post['address'];
$tel=$post['tel'];
$okflg=true;

if($onamae==''){
print 'お名前が入力されていません<br/><br/>';
$okflg=false;

}else{
print 'お名前<br/>';
print $onamae;
print '<br/><br/>';

}

if(preg_match('/^[a-zA-Z0-9_.+-]+[@][a-zA-Z0-9.-]+$/',$email)==0){

print 'メールアドレスを正確に入力してください<br/><br/>';
$okflg=false;

}else{
print 'メールアドレス<br/>';
print $email;
print '<br/><br/>';

}

if(preg_match('/^[0-9]+$/',$postal1)==0){

print '郵便番号を正確に入力してください<br/><br/>';
$okflg=false;

}else{
print '郵便番号<br/>';
print $postal1;
print '-';
print $postal2;

print '<br/><br/>';

}

if(preg_match('/^[0-9]+$/',$postal2)==0){

print '郵便番号を正確に入力してください<br/><br/>';
$okflg=false;

}

if($address==''){
print '住所が入力されていません<br/><br/>';
$okflg=false;

}else{
print '住所<br/>';
print $address;
print '<br/><br/>';

}

if(preg_match('/^0\d{9,11}$/',$tel)==0){//^0\d{9,10}$

print '電話番号を正確に入力してください<br/><br/>';
$okflg=false;

}else{
print '電話番号<br/>';
print $tel;
print '<br/><br/>';

}
if($okflg==true){
print'<form method="post" action="shop_form_done.php">';
print'<input type="hidden" name="onamae" value="'.$onamae.'">';
print'<input type="hidden" name="email" value="'.$email.'">';
print'<input type="hidden" name="postal1" value="'.$postal1.'">';
print'<input type="hidden" name="postal2" value="'.$postal2.'">';
print'<input type="hidden" name="address" value="'.$address.'">';

print'<input type="button" onclick="history.back()" value="戻る">';
print'<input type="submit" value="OK"><br/>';
print'</form>';

}else{
print'<form>';
print'<input type="button" onclick="history.back()" value="戻る">';
print'</form>';

}
?>
</body>
</html>

次は注文登録完了画面を作成していく。これは簡単で入力内容を反映するだけで良い。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

</head>
<body>

<?php

require_once('../common/common.php');

$post=sanitize($_POST);

$onamae=$post['onamae'];
$email=$post['email'];
$postal1=$post['postal1'];
$postal2=$post['postal2'];

$address=$post['address'];
$tel=$post['tel'];

print $onamae.'様';
print 'ご注文ありがとうございました<br/>';
print $email.'にメールを送りましたのでご確認ください<br/>';
print '商品は以下の住所に発送させていただきます<br/>';
print $postal1.'-'.$postal2.'<br/>';
print $address.'<br/>';
print $tel.'<br/>';

?>

</body>
</html>

なぜかtelの部分が、Notice: Undefined index: tel in /Applications/XAMPP/xamppfiles/htdocs/shop/shop_form_done.php on line 21とエラー表示になる。

Formcheckのスクリプトに下記が漏れていたので追加。
print'<input type="hidden" name="tel" value="'.$tel.'">';

これにより問題なく完了画面表示スクリプトに値を渡せるようになった。

注文内容を顧客に伝えるためにメールを送付する。メールはhtmlではないので改行は¥n,\nなどの形式に変更する。

メールの文章は長いので、一つの変数に文章を入れるにしても改行しながら進める必要があり、その場合は.=によって同じ変数に、文章を追加していく方法を取ることで、スクリプトが横長になるのを防ぐ。

<?php
session_start();
session_regenerate_id(true);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

</head>
<body>

<?php

try{
require_once('../common/common.php');

$post=sanitize($_POST);

$onamae=$post['onamae'];
$email=$post['email'];
$postal1=$post['postal1'];
$postal2=$post['postal2'];

$address=$post['address'];
$tel=$post['tel'];

print $onamae.'様';
print 'ご注文ありがとうございました<br/>';
print $email.'にメールを送りましたのでご確認ください<br/>';
print '商品は以下の住所に発送させていただきます<br/>';
print $postal1.'-'.$postal2.'<br/>';
print $address.'<br/>';
print $tel.'<br/>';

$honbun='';
$honbun.=$onamae."様\n\nこの度はご注文ありがとうございました。\n";
$honbun.="\n";
$honbun.="ご注文商品\n";
$honbun.="-----------\n";

$cart=$_SESSION['cart'];
$kazu=$_SESSION['kazu'];
$max=count($cart);

$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';

$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

for($i=0;$i<$max;$i++){

$sql='SELECT name,price FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[0]=$cart[$i];
$stmt->execute($data);

$rec=$stmt->fetch(PDO::FETCH_ASSOC);

$name=$rec['name'];
$price=$rec['price'];
$suryo=$kazu[$i];
$shokei=$price*$suryo;

$honbun.=$name.'';
$honbun.=$price.'円×';
$honbun.=$suryo.'個=';
$honbun.=$shokei."円\n";

}

$dbh=null;

$honbun.="送料は無料です。\n";
$honbun.="-------------\n";
$honbun.="\n";
$honbun.="代金は以下の口座に振り込みください。\n";
$honbun.="○○銀行 ○○支店 普通口座12345\n";
$honbun.="入金確認が取れ次第、梱包、発送させていただきます\n";
$honbun.="\n";
//$honbun.="○○県○○市12-345\n";
//$honbun.="○○銀行 ○○支店 普通口座12345\n";

print'<br/>';
print nl2br($honbun);

}
catch(Exception $e)
{

print'ただいま障害により大変ご迷惑をおかけしております。';
exit();
}

?>

</body>
</html>

さらに記載した内容をブラウザでも確認するために改行記号をhtml仕様に直してくれるnl2brメソッドを使用して適切に表示させている。

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

3

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.