前回の質問のコードを、
DirectoryIteratorを使用し、書き換えてみます。
(書き換えることのメリットなどまだよくわからないのですが...苦笑)
そうすると、前回とは違うエラーメッセージが表示されてしまいました。
クラス名が間違っているのでしょうか。
自分では間違いを発見できなかったので、ご教示の程よろしくお願い致します。
lang
1<?php require_once '../Encode.php'; ?> 2<!DOCTYPE html> 3<html> 4<head> 5<meta charset="UTF-8" /> 6<title>PHP入門教室</title> 7</head> 8<body> 9<h3>ファイルリスト</h3> 10<table border="1"> 11<tr> 12 <th>ファイル</th><th>サイズ</th><th>最終アクセス日</th><th>最終更新日</th> 13</tr> 14<?php 15define('DOC_ROOT', '../doc/'); 16$dir = new DirectoryIterator(DOC_ROOT); 17foreach ($dir as $file) { 18 if ($file->isFile()) { 19 $name = mb_convert_encoding($file->getFileName(), 'UTF-8', 'SJIS-WIN'); 20?> 21 <tr> 22 <td><a href="download.php?path=<?php print(urlencode($name)); ?>"> 23 <?php print(e($name)); ?></a></td> 24 <td><?php print(round($file->getSize() /1024)); ?>KB</td> 25 <td><?php (date('Y/m/d H:i:s', $file->getAtime())); ?></td> 26 <td><?php (date('Y/m/d H:i:s', $file->getMtime())); ?></td> 27 </tr> 28 <?php 29 } 30 /* ここまで--/docフォルダ内の出力-- */ 31} 32?> 33</table> 34</body> 35</html> 36
lang
1<?php 2define('DOC_ROOT', '../doc/'); 3$flag = FALSE; 4$o_dir = opendir(DOC_ROOT); 5while ($file = readdir($o_dir)) { 6 if(is_file(DOC_ROOT.$file)) { 7 $filename = $file; 8 $path = DOC_ROOT.$file; 9 $file = mb_convert_encoding($file, 'UTF-8', 'SJIS-WIN'); 10 if ($_GET['path'] === $file) { 11 $flag = TRUE; 12 break; 13 } 14 } 15} 16closedir($o_dir); 17if (!$flag) { die('不正なパスが指定されました。'); } 18header('Content-Type: application/octet-stream'); 19header('Content-Disposition: attachment;filename='.$filename); 20print(file_get_contents($path)); 21
実行すると、
下記のようなエラー画面になります。
![イメージ説明]WIDTH:600
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー