質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

556閲覧

PHP 確認画面が電話番号を受け取ってくれない

ema-material

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/07/12 10:03

編集2021/07/12 11:58

おせわになっております。
以下の制作物で行き詰まっております。イメージ説明

電話番号が確認画面に引き渡されず困っております。
正規表現も含め、すべての電話番号に対応するものはなにかといろいろ調べている最中です。
なにかアドバイスをいただけましたら幸いです。
どうぞよろしくお願いします。
##shop_form_check.php

PHP

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>購入者情報引き渡し</title> 6</head> 7<body> 8 9<?php 10 11require_once('../common/common.php'); 12 13$post=sanitize($_POST); 14 15$onamae=$post['onamae']; 16$email=$post['email']; 17$postal1=$post['postal1']; 18$postal2=$post['postal2']; 19$address=$post['address']; 20$tel=$post['tel']; 21 22$okflg=true; 23 24if($onamae=='') 25{ 26 print 'お名前が入力されていません。<br /><br />'; 27 $okflg=false; 28} 29else 30{ 31 print 'お名前<br />'; 32 print $onamae; 33 print '<br /><br />'; 34} 35 36if(preg_match('/^[\w\-.]+\@[\w\-.]+.([a-z]+)$/',$email)==0) 37{ 38 print 'メールアドレスを正確に入力してください。<br /><br />'; 39 $okflg=false; 40} 41else 42{ 43 print 'メールアドレス<br />'; 44 print $email; 45 print '<br /><br />'; 46} 47 48if(preg_match('/^[0-9]+$/',$postal1)==0) 49{ 50 print '郵便番号は半角数字で入力してください。<br /><br />'; 51 $okflg=false; 52} 53else 54{ 55 print '郵便番号<br />'; 56 print $postal1; 57 print '-'; 58 print $postal2; 59 print '<br /><br />'; 60} 61 62if(preg_match('/^[0-9]+$/',$postal2)==0) 63{ 64 print '郵便番号は半角数字で入力してください。<br /><br />'; 65 $okflg=false; 66} 67 68if($address=='') 69{ 70 print '住所が入力されていません。<br /><br />'; 71 $okflg=false; 72} 73else 74{ 75 print '住所<br />'; 76 print $address; 77 print '<br /><br />'; 78} 79 80if(preg_match('/^\d{2,5}-?\d{2,5}-?\d{4,5}$/',$tel)==0) 81{ 82 print '電話番号を正確に入力してください。<br /><br />'; 83 $okflg=false; 84} 85else 86{ 87 print '電話番号<br />'; 88 print $tel; 89 print '<br /><br />'; 90} 91 92if($okflg==true) 93{ 94 print '<form method="post" action="shop_form_done.php">'; 95 print '<input type="hidden" name="onamae" value="'.$onamae.'">'; 96 print '<input type="hidden" name="email" value="'.$email.'">'; 97 print '<input type="hidden" name="postal1" value="'.$postal1.'">'; 98 print '<input type="hidden" name="postal2" value="'.$postal2.'">'; 99 print '<input type="hidden" name="address" value="'.$address.'">'; 100 print '<input type="hidden" name="tel" value="'.$tel.'">'; 101 print '<input type="button" onclick="history.back()" value="戻る">'; 102 print '<input type="submit" value="OK"><br />'; 103 print '</form>'; 104} 105else 106{ 107 print '<form>'; 108 print '<input type="button" onclick="history.back()" value="戻る">'; 109 print '</form>'; 110} 111 112?> 113 114</body> 115</html>

##shop_form_done.php

PHP

1<?php 2 session_start(); 3 session_regenerate_id(true); 4?> 5<!DOCTYPE html> 6<html> 7<head> 8<meta charset="UTF-8"> 9<title>購入者情報受け取り</title> 10</head> 11<body> 12 13<?php 14 15try 16{ 17 18require_once('../common/common.php'); 19 20$post=sanitize($_POST); 21 22$onamae=$post['onamae']; 23$email=$post['email']; 24$postal1=$post['postal1']; 25$postal2=$post['postal2']; 26$address=$post['address']; 27$tel=$post['tel']; 28 29print $onamae.'様<br />'; 30print 'ご注文ありがとうござました。<br />'; 31print $email.'にメールを送りましたのでご確認ください。<br />'; 32print '商品は以下の住所に発送させていただきます。<br />'; 33print $postal1.'-'.$postal2.'<br />'; 34print $address.'<br />'; 35print $tel.'<br />'; 36 37$honbun=''; 38$honbun.=$onamae."様\n\nこのたびはご注文ありがとうございました。\n"; 39$honbun.="\n"; 40$honbun.="ご注文商品\n"; 41$honbun.="--------------------\n"; 42 43$cart=$_SESSION['cart']; 44$kazu=$_SESSION['kazu']; 45$max=count($cart); 46 47$dsn='mysql:dbname=shop;host=localhost;charset=utf8'; 48$user='root'; 49$password=''; 50$dbh=new PDO($dsn,$user,$password); 51$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 52 53for($i=0;$i<$max;$i++) 54{ 55 $sql='SELECT name,price FROM mst_product WHERE code=?'; 56 $stmt=$dbh->prepare($sql); 57 $data[0]=$cart[$i]; 58 $stmt->execute($data); 59 60 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 61 62 $name=$rec['name']; 63 $price=$rec['price']; 64 $suryo=$kazu[$i]; 65 $shokei=$price*$suryo; 66 67 $honbun.=$name.' '; 68 $honbun.=$price.'円 x '; 69 $honbun.=$suryo.'個 = '; 70 $honbun.=$shokei."円\n"; 71} 72 73$dbh=null; 74 75$honbun.="送料は無料です。\n"; 76$honbun.="--------------------\n"; 77$honbun.="\n"; 78$honbun.="代金は以下の口座にお振込ください。\n"; 79$honbun.="ろくまる銀行 やさい支店 普通口座 1234567\n"; 80$honbun.="入金確認が取れ次第、梱包、発送させていただきます。\n"; 81$honbun.="\n"; 82$honbun.="□□□□□□□□□□□□□□\n"; 83$honbun.=" ~安心野菜のろくまる農園~\n"; 84$honbun.="\n"; 85$honbun.="○○県六丸郡六丸村123-4\n"; 86$honbun.="電話 090-6060-xxxx\n"; 87$honbun.="メール info@rokumarunouen.co.jp\n"; 88$honbun.="□□□□□□□□□□□□□□\n"; 89//print '<br />'; 90//print nl2br($honbun); 91 92$title='ご注文ありがとうございます。'; 93$header='From:info@rokumarunouen.co.jp'; 94$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); 95mb_language('Japanese'); 96mb_internal_encoding('UTF-8'); 97mb_send_mail($email,$title,$honbun,$header); 98 99$title='お客様からご注文がありました。'; 100$header='From:'.$email; 101$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); 102mb_language('Japanese'); 103mb_internal_encoding('UTF-8'); 104mb_send_mail('info@rokumarunouen.co.jp',$title,$honbun,$header); 105 106} 107catch (Exception $e) 108{ 109 print 'ただいま障害により大変ご迷惑をお掛けしております。'; 110 exit(); 111} 112 113?> 114 115</body> 116</html>

##shop_form.html

html

1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>顧客情報入力画面</title> 6</head> 7 8<body> 9お客様情報を入力してください<br /> 10<form method="post" action="shop_form_check.php"> 11お名前<br /> 12<input type="text" name="onamae" style="width:200px"><br /> 13メールアドレス<br /> 14<input type="text" name="email" style="width:200px"><br /> 15郵便番号<br /> 16<input type="text" name="postal1" style="width:50px">- 17<input type="text" name="postal2" style="width:80px"><br /> 18住所<br /> 19<input type="text" name="address" style="width:500px"><br /> 20電話番号<br /> 21<input type="text" name="tel" style="width:150px"><br /> 22<input type="button" onclick="history.back()" value="戻る"> 23<input type="submit" value="OK"><br /> 24</form> 25 26</body> 27</html> 28

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/07/12 10:15

提示されているPHPにフォームデータを送信するコードはどうなっていますか?
m.ts10806

2021/07/12 10:24

>sanitize($_POST); どのような関数か知らないですが、一般的な機能としてのサニタイズなら、サニタイズ後の入力情報をバリデーションしてもそれは正しいバリデーションではないです。 ※それにスーパーグローバル変数なので引数として渡す必要ないし
ema-material

2021/07/12 11:00

失礼しました。加筆しました。
m.ts10806

2021/07/12 11:49

いや、追加してほしいのは入力フォームのHTMLで。
ema-material

2021/07/12 11:58

ご指摘ありがとうございます。 name属性をタイプミスしておりました。お恥ずかしい。 視野の狭さを反省します。
m.ts10806

2021/07/12 21:28 編集

sanitize() (PHPの標準関数では存在しないので定義は不明ですが) の使いどころは重々検討されますよう。 参考書籍が正しくない可能性が高いです。
ema-material

2021/07/12 23:22

そのようですね。。。この書籍に関するご指摘は多々いただいております。 いったんこの書籍を終了したあと、さらに精度をあげるような勉強法を試したいです。
guest

回答1

0

自己解決

html側のname属性のタイプミスでした。無事解決しました。お騒がせしました。

投稿2021/07/12 12:09

ema-material

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問