エラー処理の実装方法
$errors = array();
if(!strlen($body)) {
$errors[] = 'ひとことを入力してください';
}elseif(mb_strlen($body) > 200) {
$errors[] = 'ひとことは200文字以内で入力してください';
}
if(!is_uploaded_file($_FILES["upimg"]["tmp_name"])) {
$errors[] = '画像を選択してください'; }
if(count($errors) === 0) {
$uploads_dir = '/var/www/application/images/'; $tmp_name = $_FILES["upimg"]["tmp_name"];
$name = basename($_FILES["upimg"]["name"]); move_uploaded_file($tmp_name, $uploads_dir.$name);
chmod($uploads_dir.$name, 0677); $user = $this->session->get('user');
$this->db_manager->get('Status')->insert($user['id'], $body); $this->db_manager->get('Uploaders')->insert($user['user_name']);
return $this->redirect('/'); }
コード説明
$errors = array();
配列で$errorsに渡してあげる
if(!strlen($body)) {
$errors[] = 'ひとことを入力してください';
}elseif(mb_strlen($body) > 200) {
$errors[] = 'ひとことは200文字以内で入力してください'; }
if(!is_uploaded_file($_FILES["upimg"]["tmp_name"])) { $errors[] = '画像を選択してください';
}
もし$body(投稿内容)が空であれば、「ひとことを入力してください」と表示し、投稿
内容が200文字以上の場合は「ひとことは200文字以内で入力してください」と表示す る。もしアップロードされた画像がなかったら、「画像を選択してください」と表示する。
if(count($errors) === 0) {
$uploads_dir = '/var/www/application/images/'; $tmp_name = $_FILES["upimg"]["tmp_name"];
$name = basename($_FILES["upimg"]["name"]);
move_uploaded_file($tmp_name, $uploads_dir.$name);
chmod($uploads_dir.$name, 0677); }
もしエラーがゼロであれば、画像を保存する
・アップロードした画像を保存するためのディレクトリを指定
・サーバーに一時保管するためのファイル名
(upimgというのは、inputで自分が指定した名前を入れる)
・ファイル名
・ アップロードした画像をtmp_nameから$uploads_dirに移動
・画像ファイルのアクセス権限を指定
エラー処理の書く場所に注意したい。
私は、エラー処理は正しく書けていたが、プログラムの書く場所を間違っていたため、正
しく反映されなかった。
プログラムは上から下に順番に実行されていくことをよく頭に入れておく。