質問: PHPバージョン5.6 MySQLバージョン情報: 4.5.1 XAMPPにてローカル環境 public_htmlディレクトリ階層に「upload」フォルダを作成してアップロードした画像は 「upload」に保存され、データベースにはファイル名が保存されるようにしております。 現在、下記の方法で画像を読みだして、ブラウザに表示しようとしておりますが 何度やってもうまくいかない為、お力をお貸し頂ければと思います。 データベースから呼び出した、画像名が$data["img"]に格納されるようになっております。 $tmpに直接画像名を(例えば1.jpg)記述した場合はうまく表示されますが、$data["img"] でデータベースからのデータを入れるとうまく表示することができません。 また、thumbnailImageで画像を比率を保ったまま、縮小したいのですが、こちらも 上手く動いてくれなくて困っております。 ``` //image.php thumbnailImage(100, 0); echo $image; ?> 出力側は で出力しております。 ``` 現在、header('Content-type: image/jpeg')でjpegの画像以外の場合 他の拡張子(gif)等に変更する良いロジックがございましたら、お知恵をお貸し下さいませ。 PHPの初心者ですので、わからないことが多く、質問ばかりとなりますが宜しくお願い致します。
回答: ファイルのアップロードはフォームからやっていますか? そうなら$_FILESでファイル名などの他にtypeがわたされるので あわせてdbに登録しておけばtypeにあわせたheaderを出力すればいいでしょう そうでないなら拡張子で判断することです。 ちなみに$data["img"]が唐突にでてきますが これは$_GET["img"]などではないのでしょうか? などでデータ渡しして file_exists()で存在確認をしたほうがよいでしょう。 また不正なフォルダを参照されないようになんらかのセキュリティチェックをしてください なお、ファイル名をそのままサーバーにデータをおくと ファイル名が競合すると上書きされたりしますので 任意にファイル名は付け直して、ファイル名自体はDB側で持つほうがよいでしょう