これは私のコードです:
$ost=$_GET['id']; //get the ID from the URL
$path = "audio/soundtracks/$ost"; //use the ID to select a path
// Open the folder
$dir_handle = @opendir($path) or die("Unable to open $path");
// Loop through the files
while ($file = readdir($dir_handle)) {
if($file == "." || $file == ".." || $file == "index.php" )
continue;
echo "<a href='$path/$file'>$file</a><br />"; //return the name of the track
}
// Close
closedir($dir_handle);
その目的は、ディレクトリに含まれるすべてのサウンド トラックを自動的に一覧表示することです。ディレクトリの名前は、URL を介して渡された ID によって指定されます。各トラックは、"### - title.mp3" の形式で名前が付けられます (例: "101 - Overture.mp3")。
正常に動作しますが、結果のリストは何らかの理由でランダムにソートされます。トラックをタイトル順に並べ替える方法はありますか? また、私は PHP の初心者ですが、GET 関数にセキュリティ上の問題はありますか? 前もって感謝します。
編集: GET はパスを指定するためにのみ使用され、データベースと対話することは想定されていません。これは攻撃を防ぐのに十分ですか?
$ost = $_GET['id'];
$bad = array("../","=","<", ">", "/","\"","`","~","'","$","%","#");
$ost = str_replace($bad, "", $ost);
$path = "audio/soundtracks/$ost";