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

回答編集履歴

4

バグ修正

2015/04/16 08:20

投稿

退会済みユーザー
answer CHANGED
@@ -22,7 +22,7 @@
22
22
  $errormsgが空ならエラーが無かったということなので、
23
23
 
24
24
  ```
25
- if(count($errormsg)){
25
+ if(count($errormsg) === 0){
26
26
  header('location: send.php');
27
27
  exit();
28
28
  }
@@ -57,7 +57,7 @@
57
57
  sessionが利用できるようになっていますので、$_SESSIONに値をセットします。
58
58
 
59
59
  ```
60
- if(count($errormsg)){
60
+ if(count($errormsg) === 0){
61
61
  $_SESSION["posted"] = array(
62
62
  "name" => $name,
63
63
  "phone" => $phone,

3

補足

2015/04/16 08:20

投稿

退会済みユーザー
answer CHANGED
@@ -39,7 +39,7 @@
39
39
 
40
40
  といったように、初回表示時に未定義変数へのアクセスを抑止する必要があります。
41
41
 
42
- こうすると、入力値にエラーがあった場合にそのまま入力された値を元のフォームの入力欄に表示でき、またコードも少なくて済みます。
42
+ こうすると、入力値にエラーがあった場合にエラーを表示させ、そのまま入力された値を元のフォームの入力欄に表示でき、またコードも少なくて済みます。
43
43
 
44
44
  ところが、リダイレクト先ではPOSTされた情報はわからなくなってしまいますね。
45
45
  GETパラメターで渡す方法もありますが、これは経由するサーバーに情報が残ってしまうのであまりよろしくありません。

2

コードくくり修正

2015/04/16 02:07

投稿

退会済みユーザー
answer CHANGED
@@ -32,9 +32,11 @@
32
32
 
33
33
  つまり、お問い合わせ入力画面(form)→確認画面(check)を一つの画面でまかなうわけです。
34
34
  この場合、
35
+
35
36
  ```
36
37
  <input name="name" value="<?php if(isset($name)){ echo $name; } ?>" >
37
- ``
38
+ ```
39
+
38
40
  といったように、初回表示時に未定義変数へのアクセスを抑止する必要があります。
39
41
 
40
42
  こうすると、入力値にエラーがあった場合にそのまま入力された値を元のフォームの入力欄に表示でき、またコードも少なくて済みます。
@@ -73,9 +75,11 @@
73
75
  <?php
74
76
  session_start();
75
77
 
76
- echo $_SESSION["posted"]["name"]. "<br>\n";
78
+ echo $_SESSION["posted"]["name"];
77
- print_r($_SESSION["posted"];
79
+ print_r($_SESSION["posted"]);
80
+
78
81
  ```
79
82
 
83
+
80
84
  ご記載頂いたコードのおかしい点やセキュリティなどを考慮するといろいろありますが、
81
85
  考え方としてはこんな感じで良いのではないでしょうか。

1

補足

2015/04/16 02:06

投稿

退会済みユーザー
answer CHANGED
@@ -31,6 +31,11 @@
31
31
  といった感じでリダイレクトできます。
32
32
 
33
33
  つまり、お問い合わせ入力画面(form)→確認画面(check)を一つの画面でまかなうわけです。
34
+ この場合、
35
+ ```
36
+ <input name="name" value="<?php if(isset($name)){ echo $name; } ?>" >
37
+ ``
38
+ といったように、初回表示時に未定義変数へのアクセスを抑止する必要があります。
34
39
 
35
40
  こうすると、入力値にエラーがあった場合にそのまま入力された値を元のフォームの入力欄に表示でき、またコードも少なくて済みます。
36
41