質問編集履歴

4

解決方法の提示

2021/10/28 08:05

投稿

Maruco2321
Maruco2321

スコア118

test CHANGED
File without changes
test CHANGED
@@ -267,3 +267,29 @@
267
267
  ![イメージ説明](b710d8ddc6bf3692a8945368f335c75e.png)
268
268
 
269
269
  ![イメージ説明](16c6bf2f8541c1697d350f5c871a82ac.png)
270
+
271
+
272
+
273
+ ###解決方法、追記
274
+
275
+ あまり慣れない作業なので時間結構かかりましたが、分かりました笑
276
+
277
+ 結論から言うと
278
+
279
+ <input type="hidden" name="token" value="<?= h($_SESSION["token"]); ?> ">
280
+
281
+ の?> ">の部分を?>"> (空白をなくす)ことで解決しました。つまり
282
+
283
+ <input type="hidden" name="token" value="<?= h($_SESSION["token"]); ?> ">
284
+
285
+ <input type="hidden" name="token" value="<?= h($_SESSION["token"]); ?>">(最後のみ変化)
286
+
287
+ をすることで上手く機能します。
288
+
289
+ あまり良くない記述ですが
290
+
291
+ value="<?= h($_SESSION["token"]); ?>"
292
+
293
+ のようにダブルクォーテーションを連続で使ったとしても、一様機能的には問題ありませんでした
294
+
295
+ 尚、今回の場合はドットインストールの比較対象と自分の間違いコードを入れたり外したり、繋いだりすることでデバック(?)をやっていきました

3

補足

2021/10/28 08:05

投稿

Maruco2321
Maruco2321

スコア118

test CHANGED
File without changes
test CHANGED
@@ -208,9 +208,7 @@
208
208
 
209
209
  if(
210
210
 
211
- empty($_SESSION["token"])
212
-
213
- // || $_SESSION["token"] !== filter_input(INPUT_POST, "token")
211
+ empty($_SESSION["token"]) || $_SESSION["token"] !== filter_input(INPUT_POST, "token")
214
212
 
215
213
  ){
216
214
 

2

初期画面の説明、写真を追加

2021/10/27 07:05

投稿

Maruco2321
Maruco2321

スコア118

test CHANGED
File without changes
test CHANGED
@@ -10,6 +10,36 @@
10
10
 
11
11
 
12
12
 
13
+ <編集部分>
14
+
15
+ 初期画面はこのようになっており
16
+
17
+ ![イメージ説明](781914dfe8510491243341321a5965ac.png)
18
+
19
+ Postボタンでレスlt。php画面に行くとこのようになり
20
+
21
+ ![イメージ説明](82dcef0eec3075da6ac19b831dc4be40.png)
22
+
23
+ Go backボタンで文字が保存されるといった感じになっています。
24
+
25
+ ![イメージ説明](115317fe67252b319cedd7e2d04e2579.png)
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ //////////
40
+
41
+
42
+
13
43
  コードを何度も見比べたのですが、間違っている場所がわかりません。
14
44
 
15
45
  フォルダ、ファイルは下のような感じです。

1

文書の一部箇所を変更

2021/10/27 07:00

投稿

Maruco2321
Maruco2321

スコア118

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,11 @@
6
6
 
7
7
  「トークンの仕込むことによって、CSRF攻撃を防御する」
8
8
 
9
+ とのことなのですが、上手くいきません。
10
+
11
+
12
+
9
- とのことなのですが、上手くいきません。コードを何度も見比べたのですが、間違っている場所がわかりません。
13
+ コードを何度も見比べたのですが、間違っている場所がわかりません。
10
14
 
11
15
  フォルダ、ファイルは下のような感じです。
12
16
 
@@ -40,7 +44,15 @@
40
44
 
41
45
  ![イメージ説明](6bab21bb4a42eb408d339f1c16502116.png)
42
46
 
47
+ のドラッグ部分にあるように
48
+
49
+ 編集前:value
50
+
51
+ 編集後:index.phpの5行目辺り、createToken()
52
+
53
+
54
+
43
- のドラッグ部分にあるようにvalueが上手く機能してることも考えると条件部分の
55
+ が上手く機能してることも考えると条件部分の
44
56
 
45
57
  filter_input(INPUT_POST, "token")が上手く前のindex.phpファイルからデータを所得していない?のかと思います
46
58
 
@@ -56,6 +68,38 @@
56
68
 
57
69
  ```PHP
58
70
 
71
+ <?php
72
+
73
+ require("../app/functions.php");
74
+
75
+ createToken();
76
+
77
+ define("FILENAME","../app/messages.txt");
78
+
79
+
80
+
81
+ if($_SERVER["REQUEST_METHOD"] === "POST"){
82
+
83
+ validateToken();
84
+
85
+ $message = trim(filter_input(INPUT_POST, "message"));
86
+
87
+ $message = $message !== "" ? $message : "...";
88
+
89
+ $fp = fopen(FILENAME, "a");
90
+
91
+ fwrite($fp,$message."\n" );
92
+
93
+ fclose($fp);
94
+
95
+
96
+
97
+ header("Location: http://localhost:8080/result.php");
98
+
99
+ exit;
100
+
101
+ }
102
+
59
103
  $messages = file(FILENAME, FILE_IGNORE_NEW_LINES);
60
104
 
61
105
  include("../app/_parts/_header.php");
@@ -160,12 +204,6 @@
160
204
 
161
205
  require("../app/functions.php");
162
206
 
163
- // $color = filter_input(INPUT_GET, "color");
164
-
165
- // $color = isset($color) ? $color: "No color";
166
-
167
- // $color = $color ?? "No color";
168
-
169
207
 
170
208
 
171
209