回答編集履歴

1

調整

2022/11/01 10:12

投稿

yambejp
yambejp

スコア114747

test CHANGED
@@ -1,3 +1,37 @@
1
1
  サーバーサイドにsubmitしてバリデーションするのですよね?
2
2
  history.backはろくなことがないので使わないでください。
3
3
  再入力なら入力欄をクリアするか、もとのページを呼び出すだけでよいでしょう
4
+
5
+ # sample
6
+ ```PHP
7
+ <?PHP
8
+ $err=["hoge"=>"","fuga"=>""];
9
+ function h($str){
10
+ return htmlspecialchars($str);
11
+ }
12
+ $hoge=filter_input(INPUT_GET,"hoge",FILTER_VALIDATE_INT);
13
+ if($hoge===false) $err["hoge"]="<span class=\"err\">数値を入力して</span>";
14
+ $h_hoge=h($_REQUEST["hoge"]??"");
15
+ $fuga=filter_input(INPUT_GET,"fuga",FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>"/\A\D+\z/"]]);
16
+ if($fuga===false) $err["fuga"]="<span class=\"err\">数値以外を入力して</span>";
17
+ $h_fuga=h($_REQUEST["fuga"]??"");
18
+ $send=$_REQUEST["send"]??null;
19
+ $sainyuryoku=is_null($send)?"":"<input type=\"button\" value=\"再入力\" onclick=\"location.href='{$_SERVER["SCRIPT_NAME"]}'\">";
20
+
21
+ if(!is_null($send) and $hoge!==false and $fuga!==false){
22
+ print <<<eof
23
+ 送信処理<hr>
24
+ hoge=$hoge<br>
25
+ fuga=$fuga
26
+ eof;
27
+ exit;
28
+ }
29
+ ?>
30
+ <form>
31
+ hoge:<input name="hoge" value="<?=$h_hoge?>" placeholder="数値"><?=$err["hoge"];?><br>
32
+ fuga:<input name="fuga" value="<?=$h_fuga?>" placeholder="数値以外"><?=$err["fuga"];?><br>
33
+ <input type="submit" name="send" value="送信">
34
+ <?=$sainyuryoku?>
35
+ </form>
36
+
37
+ ```