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

回答編集履歴

2

ちょうせい

2019/10/23 10:34

投稿

yambejp
yambejp

スコア117944

answer CHANGED
@@ -74,6 +74,10 @@
74
74
  eof;
75
75
  }else{
76
76
  $_SESSION["chk"]=null;
77
-
77
+ print<<<eof
78
+ 不正処理<br>
79
+ [ <a href="{$_SERVER["SCRIPT_NAME"]}">戻る</a> ]
80
+ eof;
78
81
  }
82
+
79
83
  ```

1

ちょうせい

2019/10/23 10:34

投稿

yambejp
yambejp

スコア117944

answer CHANGED
@@ -13,4 +13,67 @@
13
13
  本件ですとおそらくaで入力してbに飛ぶという流れだと
14
14
  bが確認ページになります。
15
15
  したがってbでは再入力してはいけません。
16
- 要件が不足もしくはエラーの際は別途ページcに飛んで再入力させてください
16
+ 要件が不足もしくはエラーの際は別途ページcに飛んで再入力させてください
17
+
18
+ # sample
19
+ ざっと流れだけ
20
+ ```PHP
21
+ <?PHP
22
+ session_start();
23
+ $chk=filter_input(INPUT_GET,"chk",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
24
+ if(is_null($chk) and isset($_SESSION["chk"])){
25
+ $chk=$_SESSION["chk"];
26
+ }
27
+ $action=filter_input(INPUT_GET,"action");
28
+ if(is_null($chk)){
29
+ print <<<eof
30
+ <form method="get">
31
+ <input type="hidden" name="action" value="confirm">
32
+ <label><input type="checkbox" name="chk[0]" value="A">A</label>
33
+ <label><input type="checkbox" name="chk[1]" value="B">B</label>
34
+ <label><input type="checkbox" name="chk[2]" value="C">C</label>
35
+ <input type="submit" value="send">
36
+ </form>
37
+ eof;
38
+ }elseif($action=="confirm"){
39
+ $_SESSION["chk"]=$chk;
40
+ $h_chk=htmlspecialchars(implode(",",$chk));
41
+ print <<<eof
42
+ <form method="get">
43
+ <input type="hidden" name="action" value="modify">
44
+ <div>chk:{$h_chk}</div>
45
+ <input type="submit" value="send">
46
+ <input type="submit" name="action" value="change">
47
+ </form>
48
+ eof;
49
+ }elseif($action=="change"){
50
+ $checked=array_fill(0,3,"");
51
+ foreach(array_keys($_SESSION["chk"]) as $val){
52
+ $checked[$val]=" checked";
53
+ }
54
+ $_SESSION["chk"]=null;
55
+
56
+ print <<<eof
57
+ <form method="get">
58
+ <input type="hidden" name="action" value="confirm">
59
+ <label><input type="checkbox" name="chk[0]" value="A"{$checked[0]}>A</label>
60
+ <label><input type="checkbox" name="chk[1]" value="B"{$checked[1]}>B</label>
61
+ <label><input type="checkbox" name="chk[2]" value="C"{$checked[2]}>C</label>
62
+ <input type="submit" value="send">
63
+ </form>
64
+ eof;
65
+ }elseif($action=="modify"){
66
+ /* SESSIONを利用して更新処理 */
67
+ header('Location:'.$_SERVER["SCRIPT_NAME"].'?action=complete');
68
+ exit;
69
+ }elseif($action=="complete"){
70
+ $_SESSION["chk"]=null;
71
+ print<<<eof
72
+ 更新しました<br>
73
+ [ <a href="{$_SERVER["SCRIPT_NAME"]}">戻る</a> ]
74
+ eof;
75
+ }else{
76
+ $_SESSION["chk"]=null;
77
+
78
+ }
79
+ ```