特に、フォームPOST
自体に送信するいくつかのパラメーターを持つフォームがありますが、フォームが送信されたときにパラメーターを保持したいと思いGET
ます。
たとえば、元の URL がhttp://mydomain.com/download.php?fname=foobar.bin
である場合、POST
. ただし、foobar.bin
URL の一部は変更される可能性があります。
これは最小限の作業例です
<?php
$pass = $_POST['pass'];
$filename = $_GET['p'];
$file = "../../cgi-secret/$filename";
if($pass == "foobar")
{
header('Content-type: application/octet-stream');
header("Content-Disposition: attachment; filename=\"$filename\"");
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
// The PDF source is in original.pdf
readfile($file);
}
if(isset($_POST))
{?>
<form method="POST" action="download.php?p=$file">
Password <input type="password" name="pass"></input>
<input type="submit" name="submit" value="Get File" ></input>
</form>
<?}
?>
この行では、何が起こっても現在の URL に投稿したい
<form method="POST" action="download.php?p=$filename">
状況を説明するために、質問への回答を変更しようとしてい
ます。バイナリ ファイルのダウンロードをパスワードで保護するにはどうすればよいですか? ファイル名をGET
パラメーターとして渡すことができるようにします。