Webプログラミング※この記事は情報が古く、別の方法の方がより正確です。別記事にて改訂済みなため、以下リンクの記事を参考にしてください。【2021年改訂版】PHPでファイルをダウンロードさせるダウンローダーの実装こんにちは。2017年に以下のような記事を出しました。16:35こんにちは。最近は勉強しながらホームページの組み立てや機能の実装に力を入れているので、ブログのネタを探すことにまで手が回っていませんが、phpによるダウンローダー作成まで完成したのでこちらを公開してみようと思います。簡単なプログラムなので色々と問題はあるかもしれないんですが、とりあえず「動いた!」というところまでは出来たので、これから作る人の参考くらいにはなるんじゃないかなぁと思います。先にコードの方を貼っていきます。"不正なアクセスです。正規なページからアクセスしてください。";}?>countとかcontとかcontentsとか名前がややこしいんですが、偶然ですw(わかりやすく別の文字に変えるべきだったとは思う)以上のコードでは、「◯◯◯.com」というドメイン名のページからアクセスが有った場合に、同じディレクトリにアップロードされた「count.txt」というファイルの中に書かれた数字を1増加させ、「cont.zip」をいうファイルを「contents.zip」という名前でダウンロードさせるという動作を行うようになっています。このスクリプトを実際に使うためにどうすればよいのか書いていきます。以下のファイルを用意します。スクリプト設置元のページ上記コードを貼り付けた拡張子phpのファイル(ここではdlscript.php)カウンター用テキストファイル(ここではcount.txt)ダウンロードさせたいファイル(ここではcont.zip)順番に説明していきます。1.スクリプト設置元のページスクリプトを設置するのにはformタグを使うのが簡単です。このあたりの話は割愛しますが、ritviaでは以下のようにして、チェックボックスにチェックがされたときのみボタンが押せるようにしています。disabled="disabled">規約に同意してダウンロード</button></form>これで同意するにチェックしたときのみダウンロードボタンが押せるように出来ます。本当は連打防止のために、1回押したらボタンが消滅する等の機能もつけたほうがいいんでしょうが、このあたりは個人で対応ということで。元ページでやることはこれだけです。‘」の中だけ書き換えます。file_path)のみ書き換えたものを保存して使いまわしていくと、ダウンローダー設置時には一番下の「$file_name」だけ書き換えればいいので、つぶしが利いて楽だと思います。それ以外はよくわからない人はそのまんまで大丈夫だと思います。この方法で名前を設定する場合、圧縮前のフォルダの名前は解凍後に設定したい名前にする必要があります。先に圧縮を終えてから圧縮後のファイルの名前をこちらに合わせてリネーム等することで正しく使いまわすことが可能です。圧縮前のフォルダを先にリネームしてから圧縮してしまうと、解凍後にリネーム後の名前のフォルダがでてきてしまうのでご注意ください。3.カウンター用テキストファイルダウンロードされた回数をカウントしたい場合に、このファイルに回数が記録されていきます。最初はまず「0」とだけ書いておきましょう。その他は必要ありません。ちなみに他の場所にカウント数を表示したい場合は、そのページのファイルの拡張子をphpにして、以下の記述をすれば表示できます。?></p>これだけです。4.ダウンロードさせたいファイル目的のダウンロードさせたいファイルです。ダウンロードした時の名前はスクリプトの方に記述することが可能なので、設置するページがきちんとフォルダ分けされている場合は、こちらは毎回同じ名前にしておくと使いまわせるので楽です。このあたりは自分で分かってればOKなので、目的に合わせてファイル名やスクリプト内の記述を変化させてください。ダウンローダーを設置する1~4のそれぞれのファイルをサーバーにアップロードします。この時アップロードする場所は各ファイルで指定した場所にしてください。※アップロード後にこれらのパーミッション(アクセス許可設定)を確認・変更してください。サーバーによりますが、設置元のディレクトリに管理者以外に[w(書き込み許可)]権限があると、正しく動作しない場合があります。カウント用テキストファイルは管理者のみ読み書き可能にし、ダウンロードさせるファイルは管理者のみ読み取り可能にし、他には一切の権限を与えないようにしましょう。これをやっておかないと、設置したURLが外部に漏れた場合に、そこに直接アクセスすればダウンロードできるようになってしまいます。