回答編集履歴

1

調整

2024/08/16 06:50

投稿

yambejp
yambejp

スコア116513

test CHANGED
@@ -1 +1,50 @@
1
1
  indexからconfirmにサブミットしてください
2
+
3
+ # 参考
4
+ どうしてもセッションだけで処理をしたい場合はデータ更新用にAPIを用意します
5
+
6
+ index.php
7
+ ```php
8
+ <?PHP
9
+ session_start();
10
+ $cf02=$_SESSION["cf02"]??null;
11
+ $h_cf02=htmlspecialchars($cf02);
12
+ ?>
13
+ <script>
14
+ document.addEventListener('input',({target})=>{
15
+ if(target.matches('#yourName')){
16
+ const body=new FormData();
17
+ body.append('cf02',target.value);
18
+ const method='post';
19
+ fetch('api.php',{body,method}).then(res=>res.json()).then(console.log);
20
+ }
21
+ });
22
+ </script>
23
+ <div class="nameBox">
24
+ <label for="yourName" class="must">お名前</label>
25
+ <input type="text" id="yourName" name="cf02" placeholder="山田太郎" value="<?=$h_cf02?>"
26
+ required="required">
27
+ </div>
28
+ <a href="confirm.php">confirm</a>
29
+ ```
30
+ api.php
31
+ ```php
32
+ <?PHP
33
+ session_start();
34
+ $options=["options"=>["regexp"=>"/.{1,10}/"]]; //参考:文字の長さが1~10文字を有効とします
35
+ $cf02=filter_input(INPUT_POST,"cf02",FILTER_VALIDATE_REGEXP,$options);
36
+ if(empty($cf02)){
37
+ unset($_SESSION["cf02"]);
38
+ $cf02=null;
39
+ }else{
40
+ $_SESSION["cf02"]=$cf02;
41
+ }
42
+ $result=["cf02"=>$cf02];
43
+ print json_encode($result);
44
+ ```
45
+ confirm.php
46
+ ```php
47
+ <?PHP
48
+ session_start();
49
+ print $_SESSION["cf02"]??null;
50
+ ```