質問: false; echo '縦幅を小さくしてください!'; $error="4"; } if ($result) { echo '送信完了'; } ?> ```
回答: 色々突っ込みどころがありそうですが、シンプルに解決するならば、 1.up.phpにerrorという変数が送られたら、エラー扱いとしてエラー処理を開始する 2.errorという変数は配列になっており、resize.phpからはそのエラーコードのみを返答する 3.エラーメッセージ自体はup.phpで表示する という形にするとよいのではないでしょうか。 (配列にせず、error_1とかでも出来はしますが、配列の方がスマートに書けると思います) 上記の仕様で書いてみると、以下のようなものでどうでしょうか。 errorCode.php ``` define('ERROR_CODE_FILE_SIZE', 1); define('ERROR_CODE_FILE_TYPE', 2); define('ERROR_CODE_FILE_WIDTH', 3); define('ERROR_CODE_FILE_HEIGHT', 4); ``` resize.php ``` require_once('errorCode.php'); $error = array(); if ($filesize > 5242880) { $error[] = ERROR_CODE_FILE_SIZE; } $finfo = new finfo(FILEINFO_MIME_TYPE); if (!preg_match('/\.jpg$|\.jpeg$/i', $file['name']) || $finfo->file($tmp_name) !== 'image/jpeg') { $error[] = ERROR_CODE_FILE_TYPE; } if ($get["0"]>1000) { $error[] = ERROR_CODE_FILE_WIDTH; } if ($get["1"]>1000) { $error[] = ERROR_CODE_FILE_HEIGHT; } if(!empty($error)) { $url = 'http://localhost/up/up.php?error[]='.implode('&error[]=', $error); header('Location: '.$url); } else { echo '送信完了'; } ``` up.php ``` require_once('errorCode.php'); $errorMessage = array( ERROR_CODE_FILE_SIZE => '5M以下のファイルを選択して下さい!', ERROR_CODE_FILE_TYPE => 'JPEGファイルを選択してください!', ERROR_CODE_FILE_WIDTH => '横幅を小さくしてください!', ERROR_CODE_FILE_HEIGHT => '縦幅を小さくしてください!', ); if(!empty($_GET['error']) && is_array($_GET['error'])) { foreach($_GET['error'] as $error) { if(isset($errorMessage[$error])) { echo ''; echo $errorMessage[$error]; echo ''; } ```