回答編集履歴
1
コメントをうけてサンプルコードを追記
test
CHANGED
@@ -1 +1,163 @@
|
|
1
1
|
[$_SERVER['REQUEST_METHOD']も活用する](http://www.phpbook.jp/appli/keijiban/index3.html)と上手くできそうですね。$_POSTとか$_SESSIONとかも上手く使えば1ファイルで完結できます(個人的にファイルが増えるのが好きではないので・・・)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
# コメントをうけてのサンプルコード
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
これが完璧な回答というのではないので1つのやり方という風に捉えてください。
|
12
|
+
|
13
|
+
方針としては
|
14
|
+
|
15
|
+
0. 入力内容の送信は自身にする
|
16
|
+
|
17
|
+
0. 成功したらPOSTをそのままSESSIONに入れて確認画面にリダイレクト
|
18
|
+
|
19
|
+
0. 確認画面ではSESSIONを受け取って表示
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
※動作確認していますが確認できた全コードではなくポイントのみコメントをそえて追記しています。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
入力画面
|
28
|
+
|
29
|
+
```PHP
|
30
|
+
|
31
|
+
<?php
|
32
|
+
|
33
|
+
session_start(); //セッション開始
|
34
|
+
|
35
|
+
//同画面にエラー表示、次画面に内容送信を実現するためにセッションを利用する
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
//入力内容再表示のため初期値を持っておく
|
40
|
+
|
41
|
+
$name = "";
|
42
|
+
|
43
|
+
$data = "";
|
44
|
+
|
45
|
+
$address = "";
|
46
|
+
|
47
|
+
//POST(確認ボタンのSubmit)されたことを感知
|
48
|
+
|
49
|
+
if($_SERVER["REQUEST_METHOD"] === "POST"){
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
//入力チェックの処理 //今のものをそのままどうぞ
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
//エラーがなかったら確認画面へリダイレクト
|
58
|
+
|
59
|
+
if(count($errors) == 0){
|
60
|
+
|
61
|
+
//POST内容を全部セッション変数で受け取る
|
62
|
+
|
63
|
+
$_SESSION = $_POST;
|
64
|
+
|
65
|
+
header('Location:enshu3.php');
|
66
|
+
|
67
|
+
exit;
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
?>
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
//自画面に送信するためactionには何も設定しない
|
80
|
+
|
81
|
+
<form action = "" method = "POST">
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
//入力内容再表示のため入力コントロール部分を下記のように記述
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<p>名前:<br></p>
|
90
|
+
|
91
|
+
<input type="text" name="name" value="<?= $name ?>">
|
92
|
+
|
93
|
+
<br>
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
確認画面
|
102
|
+
|
103
|
+
```PHP
|
104
|
+
|
105
|
+
<?php
|
106
|
+
|
107
|
+
session_start(); //セッション開始
|
108
|
+
|
109
|
+
//当該ファイル(画面)にてセッションが利用できるように
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
$name = $_SESSION['name'];
|
114
|
+
|
115
|
+
$data = $_SESSION['data'];
|
116
|
+
|
117
|
+
$address = $_SESSION['address'];
|
118
|
+
|
119
|
+
?>
|
120
|
+
|
121
|
+
//あとは同じ
|
122
|
+
|
123
|
+
//完了画面でも同様に$_SESSIONを受け取り、session_destroy()とかunset($_SESSION)とかで破棄しておくこと
|
124
|
+
|
125
|
+
//submitじゃなくてもいけるようになりますが、submit使いたいなら受け取った値をtype=hiddenで置いとくのもありです。
|
126
|
+
|
127
|
+
```
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
ご提示のファイル名からしておそらく授業課題のようなものと見受けられます。
|
132
|
+
|
133
|
+
DB登録も作りこまれるようですので、セキュリティ対策も含めて組み込めるように色々と勉強してみてください。
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
# 参考URL
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
[PHPマニュアル:session_start](http://php.net/manual/ja/function.session-start.php)
|
142
|
+
|
143
|
+
[PHPマニュアル:フォームの処理](http://php.net/manual/ja/tutorial.forms.php)
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
# 追記
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
今回は現在のつくりを活かす方向でサンプルを提案させていただきましたが、
|
154
|
+
|
155
|
+
入力→確認→完了を別ファイルにすると結構色々とこねくりまわす必要が出てきます(セッション使ったりPHPでリダイレクトしたり)
|
156
|
+
|
157
|
+
「確認画面から入力画面に戻ることがあるか」と聞いたのは、**基本入力画面は画面表示だけで確認画面にエラーチェックとエラー表示と再入力画面まで持ってくることもできる**ということが念頭にあったからです。
|
158
|
+
|
159
|
+
actionをenshu3.phpにしてenshu3.phpの方でエラーチェックを行い、エラーがあったときはエラー表示、入力コントロール表示としてみたら分かると思います。
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
|