回答編集履歴

2

修正

2017/10/10 06:19

投稿

yambejp
yambejp

スコア114757

test CHANGED
@@ -142,13 +142,15 @@
142
142
 
143
143
  $t2=htmlspecialchars($_SESSION["t2"]);
144
144
 
145
+ /*よくみたら再入力の場合エラーは表示されないですね*/
146
+
145
- print <<<eof
147
+ print <<<eof
146
-
148
+
147
- <form method="post">
149
+ <form method="post">
148
-
150
+
149
- 適当な文字:<input type="text" name="t1" value="{$t1}">{$err["t1"]}<br>
151
+ 適当な文字:<input type="text" name="t1" value="{$t1}"><br>
150
-
152
+
151
- 適当な数値:<input type="text" name="t2" value="{$t2}">{$err["t2"]}<br>
153
+ 適当な数値:<input type="text" name="t2" value="{$t2}"><br>
152
154
 
153
155
  <input type="submit" name="x" value="確認">
154
156
 

1

sample

2017/10/10 06:19

投稿

yambejp
yambejp

スコア114757

test CHANGED
@@ -15,3 +15,217 @@
15
15
  onloadとクッキーやlocalstorageを組み合わせれば、場合によっては
16
16
 
17
17
  読んでくれる可能性はあります
18
+
19
+
20
+
21
+ # 同じページに飛ばしていくサンプル
22
+
23
+
24
+
25
+ ```PHP
26
+
27
+ session_start();
28
+
29
+ $x=filter_input(INPUT_POST,'x',FILTER_DEFAULT,["options"=>["default"=>""]]);
30
+
31
+ $t1=filter_input(INPUT_POST,'t1',FILTER_DEFAULT,["options"=>["default"=>""]]);
32
+
33
+ $t2=filter_input(INPUT_POST,'t2',FILTER_DEFAULT,["options"=>["default"=>""]]);
34
+
35
+ $err=["t1"=>"","t2"=>""];
36
+
37
+
38
+
39
+ if($x==="" and isset($_SESSION["x"])){
40
+
41
+ $x=$_SESSION["x"];
42
+
43
+ }
44
+
45
+
46
+
47
+ /* 以下、エラーチェック */
48
+
49
+ if($x==="確認"){
50
+
51
+ if($t1===""){
52
+
53
+ $err["t1"]="空だよ";
54
+
55
+ $x="エラー再入力";
56
+
57
+ }
58
+
59
+ if($t2===""){
60
+
61
+ $err["t2"]="空だよ";
62
+
63
+ $x="エラー再入力";
64
+
65
+ }elseif(!is_numeric($t2)){;
66
+
67
+ $err["t2"]="数値じゃないよ";
68
+
69
+ $x="エラー再入力";
70
+
71
+ }
72
+
73
+ if($x!=="エラー再入力"){
74
+
75
+ $_SESSION["t1"]=$t1;
76
+
77
+ $_SESSION["t2"]=$t2;
78
+
79
+ }
80
+
81
+ }
82
+
83
+ /* debug 出力 */
84
+
85
+ print "error:";print_r($err);
86
+
87
+ print "session:";print_r($_SESSION);
88
+
89
+ print "<hr>";
90
+
91
+
92
+
93
+ switch($x){
94
+
95
+ default:
96
+
97
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
98
+
99
+ print <<<eof
100
+
101
+ <form method="post">
102
+
103
+ 適当な文字:<input type="text" name="t1"><br>
104
+
105
+ 適当な数値:<input type="text" name="t2"><br>
106
+
107
+ <input type="submit" name="x" value="確認">
108
+
109
+ </form>
110
+
111
+ eof;
112
+
113
+ break;
114
+
115
+ case "エラー再入力":
116
+
117
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
118
+
119
+ $t1=htmlspecialchars($t1);
120
+
121
+ $t2=htmlspecialchars($t2);
122
+
123
+ print <<<eof
124
+
125
+ <form method="post">
126
+
127
+ 適当な文字:<input type="text" name="t1" value="{$t1}">{$err["t1"]}<br>
128
+
129
+ 適当な数値:<input type="text" name="t2" value="{$t2}">{$err["t2"]}<br>
130
+
131
+ <input type="submit" name="x" value="確認">
132
+
133
+ </form>
134
+
135
+ eof;
136
+
137
+ break;
138
+
139
+ case "再入力":
140
+
141
+ $t1=htmlspecialchars($_SESSION["t1"]);
142
+
143
+ $t2=htmlspecialchars($_SESSION["t2"]);
144
+
145
+ print <<<eof
146
+
147
+ <form method="post">
148
+
149
+ 適当な文字:<input type="text" name="t1" value="{$t1}">{$err["t1"]}<br>
150
+
151
+ 適当な数値:<input type="text" name="t2" value="{$t2}">{$err["t2"]}<br>
152
+
153
+ <input type="submit" name="x" value="確認">
154
+
155
+ </form>
156
+
157
+ eof;
158
+
159
+ break;
160
+
161
+ case "確認":
162
+
163
+ $t1=htmlspecialchars($t1);
164
+
165
+ $t2=htmlspecialchars($t2);
166
+
167
+ print <<<eof
168
+
169
+ <form method="post">
170
+
171
+ t1:{$t1}<br>
172
+
173
+ t2:{$t2}<br>
174
+
175
+ <hr>
176
+
177
+ <input type="submit" name="x" value="再入力">
178
+
179
+ <input type="submit" name="x" value="確定">
180
+
181
+ </form>
182
+
183
+ eof;
184
+
185
+ break;
186
+
187
+ case "確定":
188
+
189
+ /* SQLなど走らせエラーが無ければ登録完了、あれば登録エラーとしてheaderで飛ばす*/
190
+
191
+ $_SESSION["x"]="登録完了";
192
+
193
+ header("Location:{$_SERVER["SCRIPT_NAME"]}");
194
+
195
+ eof;
196
+
197
+ break;
198
+
199
+ case "登録完了":
200
+
201
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
202
+
203
+ print<<<eof
204
+
205
+ 完了しました<br>
206
+
207
+ [ <a href="{$_SERVER["SCRIPT_NAME"]}">戻る</a> ]
208
+
209
+ eof;
210
+
211
+ break;
212
+
213
+ case "登録エラー":
214
+
215
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
216
+
217
+ print<<<eof
218
+
219
+ 登録に失敗しました<br>
220
+
221
+ [ <a href="{$_SERVER["SCRIPT_NAME"]}">戻る</a> ]
222
+
223
+ eof;
224
+
225
+ break;
226
+
227
+
228
+
229
+ }
230
+
231
+ ```