PHP(ピー・エイチ・ピー)

PHP

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

お客様から、

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

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

 

まず、

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

みたいになりますね。

 

それで、

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

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

 

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

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

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

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

 

で、

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

 

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

これは問題なし!!

 

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

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

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

 

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

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

 

どうも、

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

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

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

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

 

そこで、

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

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

 

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

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

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

WordPress短期学習プログラム

関連記事

  1. PHP(ピー・エイチ・ピー)

    PHP

    PHPExcelを使ってエクセルを出力

    弊社のお客様はほぼ不動産業者様ということで、時々物件データの図面を…

  2. PHP(ピー・エイチ・ピー)

    PHP

    array_multisort()関数を使って多次元配列をソートしてみる【PHP】

    配列をソートする時、例えば、$arr_data = array…

  3. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】array_search()関数とin_array()関数

    ある特定の値が配列の中に含まれているかをチェックする際にarray_s…

  4. PHP(ピー・エイチ・ピー)

    PHP

    Nginx+WordPressでブログを運営(PHP5.5のインストール)

    PHP5.5をインストールPHP5.5のインストール手…

  5. CakePHP

    PHP

    Indirect modification of overloaded element of Cak…

    $this->data = "1";といった具合で、Ca…

  6. PHP(ピー・エイチ・ピー)

    PHP

    exec()関数でwhois情報を取得

    最近やたらとwhois情報を検索する機会が増えたので、PHPでwh…

最近の記事

  1. URLのwwwあり・なしの統一方法
  2. URLのwwwはあり?なし?
  3. SEO(エスイーオー)
  4. 中古ドメイン(Old Domain)について
  5. CakePHP
  6. Technology-Connection-Net
  7. ドメインにハイフンを使うのは日本人だけ?
  8. SSL(HTTPS)
  9. ドメインについて
  10. WP:WordPress(ワードプレス)
PAGE TOP