teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

本文の文法と問題点を修正

2019/10/12 09:30

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- webサイトのお問い合わせフォームにバリデーションをつけたい。
1
+ Webサイトのお問い合わせフォームにバリデーションをつけたい。
body CHANGED
@@ -1,25 +1,9 @@
1
1
  ### 前提・実現したいこと
2
2
  webサイトのお問い合わせフォームにバリデーションをつけたい。
3
- 最終的には、
4
- http://webeg.info/php-course/step2-020/
3
+ フォームに入力(index.php)⇒「確認ページ」(confirm.php)⇒「サンクスページ」⇒投稿者に確認メールを自動送信する、という流れまでphpが正常に動作するのですが、
5
- のサイトにあるように
6
- ・変数のホワイトリスト化
7
- ・サニタイズ(サニタイジング)
8
- ・クロスサイトスクリプティングの実験
9
- ・バリデート(バリデーション)
10
- ・入力必須チェック
11
- ・正規表現での形式チェック
12
- ・エラー時の初期表示をセット
13
- ・ヌルバイト除去
14
- を完備したいですが、バリデーションでつまづいています。
4
+ 現在設定だとバリデーションの部分のエラー表示が「確認ページ」に出るの
5
+ (index.php)のフォーム入力欄の上にエラー表示を出したい。
15
6
 
16
- ### 発生している問題・エラーメッセージ
17
-
18
- ```
19
- フォームに入力(index.php)⇒「確認ページ」(confirm.php)⇒「サンクスページ」⇒投稿者に確認メールを自動送信する
20
- という流れまではphpが動作するのですが、バリデーションの部分が作れず、困っています。
21
- ```
22
-
23
7
  ### 該当のソースコード(フォームの入力ページ:index.php)
24
8
 
25
9
  ```php
@@ -61,6 +45,19 @@
61
45
  return htmlentities($str, ENT_QUOTES, "UTF-8");
62
46
  }
63
47
 
48
+ $page_error = ""; // エラーメッセージ
49
+ // エラーチェック
50
+ if (isset($_POST["submit"])) {
51
+ if ($email == "") {
52
+ $page_error = "メールアドレスを入力してください\n";
53
+ }
54
+ if ($page_error == "") {
55
+ if (!preg_match('/^([a-zA-Z0-9.\_\-+?\#\&\%])*@([a-zA-Z0-9\_\-])+([a-zA-Z0-9.\_\-]+)+$/', $email)) {
56
+ $page_error = "メールアドレスを正しく入力してください\n";
57
+ }
58
+ }
59
+ }
60
+
64
61
  // フォームのボタンが押されたら
65
62
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
66
63
  // フォームから送信されたデータを各変数に格納
@@ -132,7 +129,7 @@
132
129
  <p class="kakunin_title">お問い合わせ内容がよろしければ、「送信する」ボタンを押して下さい。</p>
133
130
  <div>
134
131
  <div><label>お名前</label><p><?php echo he($name); ?></p></div>
135
- <div><label>メールアドレス</label><p><?php echo he($email); ?></p></div>
132
+ <div><label>メールアドレス</label><span class="error_text"><?php echo he($page_error); ?></span></div>
136
133
  <div><label>件名</label><p><?php echo he($kenmei); ?></p></div>
137
134
  <div><label>お問い合わせ内容</label><p><?php echo nl2br(he($message)); ?></p></div>
138
135
  </div>
@@ -145,7 +142,7 @@
145
142
  ```
146
143
 
147
144
  ### 試したこと
148
- 【バリデーションのPHP部分】
145
+ **【バリデーションのPHP部分】**
149
146
  $page_error = ""; // エラーメッセージ
150
147
  // エラーチェック
151
148
  if (isset($_POST["submit"])) {
@@ -158,8 +155,8 @@
158
155
  }
159
156
  }
160
157
  }
161
- 【HTMLで呼び出す部分】
158
+ **【HTMLで呼び出す部分】**
162
- <?php echo he($page_error); ?>
159
+ <span class="error_text"><?php echo he($page_error); ?></span>
163
- -----------------------------------------------------
160
+
164
161
  ↑といった内容を組み込みたいです。
165
162
  ※Jquery Validation Pluginも試してみましたが動作しませんでした。

2

「試したこと」の、文法の修正2

2019/10/12 09:30

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -145,17 +145,21 @@
145
145
  ```
146
146
 
147
147
  ### 試したこと
148
-
148
+ 【バリデーションのPHP部分】
149
- ※Jquery Validation Pluginも試してみましたが動作しませんでした。
149
+ $page_error = ""; // エラーメッセージ
150
-
151
150
  // エラーチェック
151
+ if (isset($_POST["submit"])) {
152
152
  if ($email == "") {
153
- $email_error = "メールアドレスを入力してください\n";
153
+ $page_error = "メールアドレスを入力してください\n";
154
154
  }
155
- if ($email_error == "") {
155
+ if ($page_error == "") {
156
156
  if (!preg_match('/^([a-zA-Z0-9.\_\-+?\#\&\%])*@([a-zA-Z0-9\_\-])+([a-zA-Z0-9.\_\-]+)+$/', $email)) {
157
- $email_error = "メールアドレスを正しく入力してください\n";
157
+ $page_error = "メールアドレスを正しく入力してください\n";
158
158
  }
159
159
  }
160
+ }
161
+ 【HTMLで呼び出す部分】
162
+ <?php echo he($page_error); ?>
160
163
  -----------------------------------------------------
161
- ↑といった内容を組み込みたいですが、動作しませんでした
164
+ ↑といった内容を組み込みたいです。
165
+ ※Jquery Validation Pluginも試してみましたが動作しませんでした。

1

「試したこと」の、文法の修正

2019/10/12 09:04

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -153,8 +153,8 @@
153
153
  $email_error = "メールアドレスを入力してください\n";
154
154
  }
155
155
  if ($email_error == "") {
156
- if (!preg_match('/^([a-zA-Z0-9.\_\-+?\#\&\%])*@([a-zA-Z0-9\_\-])+([a-zA-Z0-9.\_\-]+)+$/', $request["email"])) {
156
+ if (!preg_match('/^([a-zA-Z0-9.\_\-+?\#\&\%])*@([a-zA-Z0-9\_\-])+([a-zA-Z0-9.\_\-]+)+$/', $email)) {
157
- $page_error = "メールアドレスを正しく入力してください\n";
157
+ $email_error = "メールアドレスを正しく入力してください\n";
158
158
  }
159
159
  }
160
160
  -----------------------------------------------------