回答編集履歴
4
追記
test
CHANGED
@@ -339,3 +339,83 @@
|
|
339
339
|
</html>
|
340
340
|
|
341
341
|
```
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
---
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
#追記
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
> ①// 配列の初期化 $arr = []; // パラメータをセットする $arr[':id'] = $id;
|
354
|
+
|
355
|
+
です。そもそもこういう処理自体初見に近いです。
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
この記述なら、みたことあるのではないでしょうか?
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
```php
|
364
|
+
|
365
|
+
$arr = array();
|
366
|
+
|
367
|
+
$arr[':id'] = $id;
|
368
|
+
|
369
|
+
```
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
```php
|
374
|
+
|
375
|
+
$arr = array();
|
376
|
+
|
377
|
+
```
|
378
|
+
|
379
|
+
と
|
380
|
+
|
381
|
+
```php
|
382
|
+
|
383
|
+
$arr = [];
|
384
|
+
|
385
|
+
```
|
386
|
+
|
387
|
+
は同じことを行なっています。 `[]` はPHP5.4以上で可能になった書き方です。
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
> ②html内の出力もすごいですね。ifで0以上なら(if(!empty)出力もあり?)…foreachでぶん回してhtml...(←特殊をhtmlに変換でしたっけ‥?)で出力でしょうか??
|
394
|
+
|
395
|
+
(他にも細かいこと聞いたらきりがなさそうです。)
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
この `if` の条件式がないと、
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
```html
|
404
|
+
|
405
|
+
<table>
|
406
|
+
|
407
|
+
</table>
|
408
|
+
|
409
|
+
```
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
という、HTMLとして不十分な出力になってしまいますよね。
|
414
|
+
|
415
|
+
|
416
|
+
|
417
|
+
> 画像を出力するときも
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
+
そうです。基本的に、PHPの「変数」を echo 及び print で出力するときにはすべて htmlspecialchars 関数を通します。
|
3
追記
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
```php
|
6
6
|
|
7
|
-
htmlspecialchars($row['id']);
|
7
|
+
htmlspecialchars($row['id']); // なんのためにいれたの?
|
8
8
|
|
9
9
|
echo "<a href='xxxxxxxxx.php?id={$id}'>".$row['title']."</a>";?> // $id ってどこからきたの?
|
10
10
|
|
2
修正
test
CHANGED
@@ -1,4 +1,32 @@
|
|
1
|
+
明らかな間違いが
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
```php
|
6
|
+
|
7
|
+
htmlspecialchars($row['id']);
|
8
|
+
|
9
|
+
echo "<a href='xxxxxxxxx.php?id={$id}'>".$row['title']."</a>";?> // $id ってどこからきたの?
|
10
|
+
|
11
|
+
```
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
ですね。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
```php
|
20
|
+
|
21
|
+
$id = htmlspecialchars($row['id']);
|
22
|
+
|
23
|
+
echo "<a href='xxxxxxxxx.php?id={$id}'>".$row['title']."</a>";?>
|
24
|
+
|
25
|
+
```
|
26
|
+
|
27
|
+
|
28
|
+
|
1
|
-
セキュリティ
|
29
|
+
セキュリティの面で言えば、省略されている部分に重要な点がありますので、サンプルコードを元に説明します。
|
2
30
|
|
3
31
|
|
4
32
|
|
1
修正
test
CHANGED
@@ -162,6 +162,14 @@
|
|
162
162
|
|
163
163
|
|
164
164
|
|
165
|
+
// デバッグ(開発)時は必ず記述する
|
166
|
+
|
167
|
+
ini_set('display_errors', true);
|
168
|
+
|
169
|
+
error_reporting(E_ALL);
|
170
|
+
|
171
|
+
|
172
|
+
|
165
173
|
/**
|
166
174
|
|
167
175
|
* XSS対策
|
@@ -184,14 +192,6 @@
|
|
184
192
|
|
185
193
|
try {
|
186
194
|
|
187
|
-
// デバッグ(開発)時は必ず記述する
|
188
|
-
|
189
|
-
ini_set('display_errors', true);
|
190
|
-
|
191
|
-
error_reporting(E_ALL);
|
192
|
-
|
193
|
-
|
194
|
-
|
195
195
|
// DSNには必ず文字コードの指定をする
|
196
196
|
|
197
197
|
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8;';
|