LoginSignup
0
0

More than 3 years have passed since last update.

画像アップロード掲示板 エラー処理

Last updated at Posted at 2020-09-21

エラー処理の実装方法

$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に移動
・画像ファイルのアクセス権限を指定

エラー処理の書く場所に注意したい。
私は、エラー処理は正しく書けていたが、プログラムの書く場所を間違っていたため、正
しく反映されなかった。
プログラムは上から下に順番に実行されていくことをよく頭に入れておく。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0