質問編集履歴

2

体裁変更

2021/06/07 14:11

投稿

_Soma
_Soma

スコア16

test CHANGED
File without changes
test CHANGED
@@ -142,11 +142,11 @@
142
142
 
143
143
  ```
144
144
 
145
+ ■touroku.php 確認用
146
+
145
147
  ```PHP
146
148
 
147
149
 
148
-
149
- ■touroku.php 確認用
150
150
 
151
151
  <?php
152
152
 

1

セッションを使用し2重登録の対策を試みましたがうまく動きません。

2021/06/07 14:11

投稿

_Soma
_Soma

スコア16

test CHANGED
File without changes
test CHANGED
@@ -11,6 +11,18 @@
11
11
  原因と対策方法を教えていただけないでしょうか。
12
12
 
13
13
  ※今のところPCは2重登録ができない。
14
+
15
+
16
+
17
+ 2重登録の対策でセッションを使用してみようと思ってコードを変更してみたところ、
18
+
19
+ 「不正なリクエストです」となってしまいます。
20
+
21
+ echoで確認しても両方空のようでうまく動きません・・・
22
+
23
+ ほぼ参考サイトのコピペなのですがなぜでしょうか。
24
+
25
+ ※index側では値が入っているのは確認できました。
14
26
 
15
27
 
16
28
 
@@ -44,6 +56,14 @@
44
56
 
45
57
  ```PHP
46
58
 
59
+ session_start();
60
+
61
+ $toke_byte = openssl_random_pseudo_bytes(16);
62
+
63
+ $csrf_token = bin2hex($toke_byte);
64
+
65
+ $_SESSION['csrf_token'] = $csrf_token;
66
+
47
67
 
48
68
 
49
69
  $ip = $_SERVER['REMOTE_ADDR'];
@@ -68,7 +88,7 @@
68
88
 
69
89
   echo '<form action="./touroku.php" method="POST">';
70
90
 
71
-  
91
+ echo ' <input type="hidden" name="csrf_token" value="<?=$csrf_token?>">';
72
92
 
73
93
   echo ' <label><input type="radio" name="text" value="A"> A</label><br>';
74
94
 
@@ -121,3 +141,33 @@
121
141
  header('Location: ./index.php?member='.$member);
122
142
 
123
143
  ```
144
+
145
+ ```PHP
146
+
147
+
148
+
149
+ ■touroku.php 確認用
150
+
151
+ <?php
152
+
153
+ session_start();
154
+
155
+ echo $_POST["csrf_token"];
156
+
157
+ echo $_SESSION['csrf_token'];
158
+
159
+
160
+
161
+ if ( $_POST['csrf_token'] === $_SESSION['csrf_token']) {
162
+
163
+ echo "aaa";
164
+
165
+ } else {
166
+
167
+ echo "不正なリクエストです";
168
+
169
+ }
170
+
171
+ ?>
172
+
173
+ ```