画像掲示板


##概要

- 画像のアップロード掲示板です
- ログイン不要
- DBを使わずにファイルにデータを保存します

##サンプルコード
- https://gist.github.com/c-taka/5746696
- https://gist.github.com/c-taka/5746676
- https://gist.github.com/c-taka/5746674


##ファイル構成

- /thumbnails
- /images
- index.php
- config.php
- upload.php


##設定ファイル(config.php)
###処理概要

- 定数の定義
	- 画像ディレクトリ
	- サムネールの横幅
	- ファイルサイズ


###言語リファレンス
- [define](http://www.php.net/manual/ja/function.define.php)
	- 名前を指定して定数を定義する
- [dirname](http://php.net/manual/ja/function.dirname.php)
	- 親ディレクトリのパスを返す
- [$_SERVER](http://php.net/manual/ja/reserved.variables.server.php)
	- サーバー情報および実行時の環境情報
- [error_reporting](http://www.php.net/manual/ja/function.error-reporting.php)
	- 出力する PHP エラーの種類を設定する
- [MAX_FILE_SIZE](http://atamoco.boy.jp/php5/file/max_file_size.php)
- [php.ini upload_max_filesize](http://www.php.net/manual/ja/ini.core.php#ini.upload-max-filesize)
	- アップロードされるファイルの最大サイズ。
	- デフォルトは、2 メガバイトです。
- [function_exists](http://www.php.net/manual/ja/function.function-exists.php)
	- 指定した関数が定義されている場合に TRUE を返す
- [画像処理および作成](http://www.php.net/manual/ja/refs.utilspec.image.php)
- [GD および Image 関数](http://www.php.net/manual/ja/ref.image.php)

##画像投稿フォーム(index.php)
###処理概要
- フォームの内容
- 初期設定ファイルを読み込み

###言語リファレンス
- [require_once](http://jp1.php.net/manual/ja/function.require-once.php)
	- 指定されたファイルを読み込み、評価します


##ファイルアップロード(upload.php)
###処理概要
- $_FILESをvar_dumpして動作を確認

###リファレンス
- [$_FILES](http://php.net/manual/ja/reserved.variables.files.php)
	- HTTP ファイルアップロード変数
- [ファイルアップロードの処理](http://www.php.net/manual/ja/features.file-upload.php)
	- [POST メソッドによるアップロード](http://www.php.net/manual/ja/features.file-upload.post-method.php)
	- [エラーメッセージの説明](http://www.php.net/manual/ja/features.file-upload.errors.php)
	- [陥りやすい落とし穴](http://www.php.net/manual/ja/features.file-upload.common-pitfalls.php)
	- [複数ファイルのアップロード](http://www.php.net/manual/ja/feature-fileupload.multiple.php)
	- [PUT メソッドのサポート](http://www.php.net/manual/ja/features.file-upload.put-method.php)



###1.エラーチェックを行う
- アップロードエラーの確認
- ファイルサイズの確認

###2.ファイルの拡張子を取得する

- getimagesizeによるファイル情報の取得
- MIME Typeで判定して、ファイル拡張子の設定


###3.元画像を保存する

- 重複しないファイル名を生成
	- var_dump()で確認
- 保存フォルダへの格納

###4.縮小画像を作成、保存する
- 画像サイズの取得
- 縮小画像を作るための元ファイルを生成
- 縦横サイズの計算
- 縮小画像の生成

###言語リファレンス

- [filesize](http://php.net/manual/ja/function.filesize.php)
	- ファイルのサイズを取得する
- [getimagesize](http://www.php.net/manual/ja/function.getimagesize.php)
	- 画像の大きさを取得する
- [sha1](http://www.php.net/manual/ja/function.sha1.php)
	- 文字列の sha1 ハッシュを計算する
- [mt_rand](http://www.php.net/manual/ja/function.mt-rand.php)
	- よりよい乱数値を生成する
- [time](http://www.php.net/manual/ja/function.time.php)
	- 現在の Unix タイムスタンプを返す
- [move_uploaded_file](http://www.php.net/manual/ja/function.move-uploaded-file.php)
	- アップロードされたファイルを新しい位置に移動する
- [imagecreatefromgif](http://www.php.net/manual/ja/function.imagecreatefromgif.php)
- [imagecreatefromjpeg](http://www.php.net/manual/ja/function.imagecreatefromjpeg.php)
- [imagecreatefrompng](http://www.php.net/manual/ja/function.imagecreatefrompng.php)
	- 新しい画像をファイルあるいは URL から作成する
- [round](http://www.php.net/manual/ja/function.round.php)
	- 浮動小数点数を丸める
- [imagecreatetruecolor](http://www.php.net/manual/ja/function.imagecreatetruecolor.php)
	- TrueColor イメージを新規に作成する
- [imagecopyresampled](http://www.php.net/manual/ja/function.imagecopyresampled.php)
	- 再サンプリングを行いイメージの一部をコピー、伸縮する
- [imagegif](http://www.php.net/manual/ja/function.imagegif.php)
- [imagejpeg](http://www.php.net/manual/ja/function.imagejpeg.php)
- [imagepng](http://www.php.net/manual/ja/function.imagepng.php)
	- 画像をブラウザあるいはファイルに出力する
- [header](http://www.php.net/manual/ja/function.header.php)
	- 生の HTTP ヘッダを送信する


##画像一覧を表示する(index.php)
###処理概要
- readdirによる読み込み・確認
- 縮小画像の存在チェックをして条件分岐
- 画像ファイル名の格納
- 画像の表示

###言語リファレンス
- [readdir](http://jp2.php.net/manual/ja/function.readdir.php)
- [opendir](http://jp2.php.net/manual/ja/function.opendir.php)
- [strpos](http://www.php.net/manual/ja/function.strpos.php)
	- 文字列内の部分文字列が最初に現れる場所を見つける
- [basename](http://www.php.net/manual/ja/function.basename.php)
	- パスの最後にある名前の部分を返す