PHP

PHP

PHP PDFファイルのアップロード機能を追加

お客様から、

既存システムにPDFファイルをアップロードする機能を追加したという依頼を頂きました。

その機能について少し説明したいと思います。

 

まず、

ファイルの選択画面のHTMLは、

みたいになりますね。

 

それで、

ファイルのアップロード処理を行うPHP側のコードは、

みたなコードになりますね。
※かなり雑なコードですが。。。

 

これで完了であれば非常に簡単なんですが、

当然PDFファイルのアップロード機能なので、

アップロード処理を行う前に、

PDF以外のファイルをアップロードしていないかのチェックを行わないといけません。
※例えば、悪意のあるスクリプトを記述したHTMLなどをアップロードされると深刻な脆弱性になってしまうこともあるので、
 アップロードするファイルの種類が決まっているのであれば、必ずファイルのチェック処理は行って下さい。

 

で、

今回ここで問題が1点発生しました。。。

 

まずは、以下のコードで拡張子のチェックを行います。

これは問題なし!!

 

次に、以下のコードでファイルタイプのチェックを行います。

これも問題が無いように思いますが、

テストしてみるとまずい動作が見つかりました。

 

テストの為に画像(今回はJPEGファイル)の拡張子を無理やり「.pdf」に変更してアップロードしてみたのですが、

なぜかこのチェック処理を抜けてアップロードできてしまいます。

 

どうも、

$_FILES[“pdf_file”][“type”]に入っているファイルタイプが、

「image/jpeg」ではなく「application/pdf」になってしまっているようです。

拡張子を無理やり変えただけのファイルまでPDFファイルとして認識されてしまうのは気持ちが悪いので、

このコードはまずいです。

 

そこで、

今回は以下のコードに書き換えてやることで、

こちらの意図通りの処理を行うことが出来ました。

 

ブログに全コードを記載するのは大変なので、

かなりおおざっぱなコードになってしまいましたが、

取りあえずこんな感じで機能追加は可能です。

関連記事

  1. PHP

    PHP

    PHP4では読み込めていたんですが。。。

     先日、急にあるプログラムが正常に動作しなくなったとの報告がありま…

  2. PHP

    PHP

    APIを使って天気情報を表示させてみました。

    ページの端っこの方に天気を表示させる機会があったので、その方法を記…

  3. PHP

    PHP

    PEARのCache_Liteを試してみた

    file_get_contents()を使ってRSSから新着情報を読み…

  4. WordPress

    PHP

    WPの記事インポートで画像のサムネイルが作成されない!!

    WordPressに記事をインポートしてみたのですが、どうも記事の…

  5. PHP

    PHP

    PHPで「Warning: A non-numeric value encountered」というエ…

    かなり前に弊社で組んだシステムをPHP7.1の環境に移行しているのです…

  6. PHP

    PHP

    勝手にサーバ移行はやめて。。。

    かなり前に弊社が作成、納品したデータの入力システムがあるのですが、…

最近の記事

  1. PHP
  2. 丹波の栗
  3. ブログ アイキャッチ
  4. SSL(HTTPS通信)
PAGE TOP