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

回答編集履歴

2

修正

2017/10/10 06:19

投稿

yambejp
yambejp

スコア118098

answer CHANGED
@@ -70,10 +70,11 @@
70
70
  case "再入力":
71
71
  $t1=htmlspecialchars($_SESSION["t1"]);
72
72
  $t2=htmlspecialchars($_SESSION["t2"]);
73
+ /*よくみたら再入力の場合エラーは表示されないですね*/
73
74
  print <<<eof
74
75
  <form method="post">
75
- 適当な文字:<input type="text" name="t1" value="{$t1}">{$err["t1"]}<br>
76
+ 適当な文字:<input type="text" name="t1" value="{$t1}"><br>
76
- 適当な数値:<input type="text" name="t2" value="{$t2}">{$err["t2"]}<br>
77
+ 適当な数値:<input type="text" name="t2" value="{$t2}"><br>
77
78
  <input type="submit" name="x" value="確認">
78
79
  </form>
79
80
  eof;

1

sample

2017/10/10 06:19

投稿

yambejp
yambejp

スコア118098

answer CHANGED
@@ -6,4 +6,111 @@
6
6
 
7
7
  どうしてもなんとかしたいのでしたら、動作は保証されませんが
8
8
  onloadとクッキーやlocalstorageを組み合わせれば、場合によっては
9
- 読んでくれる可能性はあります
9
+ 読んでくれる可能性はあります
10
+
11
+ # 同じページに飛ばしていくサンプル
12
+
13
+ ```PHP
14
+ session_start();
15
+ $x=filter_input(INPUT_POST,'x',FILTER_DEFAULT,["options"=>["default"=>""]]);
16
+ $t1=filter_input(INPUT_POST,'t1',FILTER_DEFAULT,["options"=>["default"=>""]]);
17
+ $t2=filter_input(INPUT_POST,'t2',FILTER_DEFAULT,["options"=>["default"=>""]]);
18
+ $err=["t1"=>"","t2"=>""];
19
+
20
+ if($x==="" and isset($_SESSION["x"])){
21
+ $x=$_SESSION["x"];
22
+ }
23
+
24
+ /* 以下、エラーチェック */
25
+ if($x==="確認"){
26
+ if($t1===""){
27
+ $err["t1"]="空だよ";
28
+ $x="エラー再入力";
29
+ }
30
+ if($t2===""){
31
+ $err["t2"]="空だよ";
32
+ $x="エラー再入力";
33
+ }elseif(!is_numeric($t2)){;
34
+ $err["t2"]="数値じゃないよ";
35
+ $x="エラー再入力";
36
+ }
37
+ if($x!=="エラー再入力"){
38
+ $_SESSION["t1"]=$t1;
39
+ $_SESSION["t2"]=$t2;
40
+ }
41
+ }
42
+ /* debug 出力 */
43
+ print "error:";print_r($err);
44
+ print "session:";print_r($_SESSION);
45
+ print "<hr>";
46
+
47
+ switch($x){
48
+ default:
49
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
50
+ print <<<eof
51
+ <form method="post">
52
+ 適当な文字:<input type="text" name="t1"><br>
53
+ 適当な数値:<input type="text" name="t2"><br>
54
+ <input type="submit" name="x" value="確認">
55
+ </form>
56
+ eof;
57
+ break;
58
+ case "エラー再入力":
59
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
60
+ $t1=htmlspecialchars($t1);
61
+ $t2=htmlspecialchars($t2);
62
+ print <<<eof
63
+ <form method="post">
64
+ 適当な文字:<input type="text" name="t1" value="{$t1}">{$err["t1"]}<br>
65
+ 適当な数値:<input type="text" name="t2" value="{$t2}">{$err["t2"]}<br>
66
+ <input type="submit" name="x" value="確認">
67
+ </form>
68
+ eof;
69
+ break;
70
+ case "再入力":
71
+ $t1=htmlspecialchars($_SESSION["t1"]);
72
+ $t2=htmlspecialchars($_SESSION["t2"]);
73
+ print <<<eof
74
+ <form method="post">
75
+ 適当な文字:<input type="text" name="t1" value="{$t1}">{$err["t1"]}<br>
76
+ 適当な数値:<input type="text" name="t2" value="{$t2}">{$err["t2"]}<br>
77
+ <input type="submit" name="x" value="確認">
78
+ </form>
79
+ eof;
80
+ break;
81
+ case "確認":
82
+ $t1=htmlspecialchars($t1);
83
+ $t2=htmlspecialchars($t2);
84
+ print <<<eof
85
+ <form method="post">
86
+ t1:{$t1}<br>
87
+ t2:{$t2}<br>
88
+ <hr>
89
+ <input type="submit" name="x" value="再入力">
90
+ <input type="submit" name="x" value="確定">
91
+ </form>
92
+ eof;
93
+ break;
94
+ case "確定":
95
+ /* SQLなど走らせエラーが無ければ登録完了、あれば登録エラーとしてheaderで飛ばす*/
96
+ $_SESSION["x"]="登録完了";
97
+ header("Location:{$_SERVER["SCRIPT_NAME"]}");
98
+ eof;
99
+ break;
100
+ case "登録完了":
101
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
102
+ print<<<eof
103
+ 完了しました<br>
104
+ [ <a href="{$_SERVER["SCRIPT_NAME"]}">戻る</a> ]
105
+ eof;
106
+ break;
107
+ case "登録エラー":
108
+ unset($_SESSION["t1"],$_SESSION["t2"],$_SESSION["x"]);
109
+ print<<<eof
110
+ 登録に失敗しました<br>
111
+ [ <a href="{$_SERVER["SCRIPT_NAME"]}">戻る</a> ]
112
+ eof;
113
+ break;
114
+
115
+ }
116
+ ```