• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP ダウンロードサイトの直リンク)

PHP ダウンロードサイトの直リンク

このQ&Aのポイント
  • PHPを使用してzipのダウンロードページを作成している際に、直接download.phpのリンクを知っている人がいた場合の対策方法について教えてください。
  • 現在、phpを用いてzipのダウンロードページを作成しており、必要事項を入力してもらった上でダウンロードができる仕組みです。しかし、直接download.phpのリンクを知っている人がいた場合、urlに直接入力することでアクセスできてしまいます。この問題を解決するための方法やベストプラクティスについて教えてください。
  • 現在、phpを使用してzipのダウンロードページを作成しています。しかし、直接download.phpのリンクを知っている人がいた場合、urlに直接入力することでアクセスできてしまいます。この問題を解決するための方法やリスクを避けるためのベストプラクティスについて教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

download.phpを下記のようにすれば良いと思います。 1.ダウンロードさせる対象のファイルを公開以外のローカルフォルダーに格納   →これにより直ダウンロードはできません。 2.このプログラムの中から、ダウンロードさせる対象のファイルを読み込み標準出力にはき出す。   ※下記にPDFをダウンロード(inlineで)させる例です。 //$filename には、ローカルファイルフルパス名が入っている(PDF) if( !file_exists($filename) ) { return false; } $filesize = filesize($filename); header("Content-Disposition: inline; filename=".basename($filename)); header("Content-Length: " . $filesize); header("Content-Type: application/pdf"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); header("Pragma: private"); $handle = fopen($filename, "rb"); while (!feof($handle)) { echo fread($handle, 4096); // TimeOutさせない為 flush();          // TimeOutさせない為 } fclose($handle); return true; }   

teckiko
質問者

お礼

なるほど~ こういう技もあるのですね、勉強になります! すみません、まだサイトへの実装作業に取り掛かれていないので、後日実装してみます~ ありがとうございました!

その他の回答 (1)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

会員制なんですよね? それなら、ログイン処理を入れてログインしていなければダウンロードできないようにしていればいいと思います。 ログインしたページに、ダウンロードできるファイルの一覧って形で表を用意しておいて、クリックするとdownload.phpに。 ログイン無しでdownload.phpを直接入力しても、ログインされていませんと表示すればOKだと思いますが。 $_SESSIONあたりを使って、ログイン情報を引き回せますよ。

teckiko
質問者

お礼

ありがとうございました。

teckiko
質問者

補足

すみません、会員制というのが少しオーバーな表現でした。 会員といいますか、フォームに氏名やメールアドレスを入力して頂く→結果的に会員になる という流れなので、会員と申し上げましたが、実際はログイン画面を別途用意しているわけではないのです。 説明が足らず申し訳ありません。 しかし、$_SESSIONは、何か別の方法で使えそうな気がします!

関連するQ&A