Массив PHP для запуска сообщения об ошибке при загрузке файла

Я следую учебнику, найденному в Интернете при загрузке изображений. Мне нужна твоя помощь, чтобы понять, что кодеры немного лучше, поскольку я новичок.

Понимаете, есть массив с ключами и значениями, присвоенными возможным ошибкам загрузки. Мне интересно, как будут возникать эти ошибки, поскольку я не нашел связи в другом месте кода.

Где я пытаюсь понять: есть ли эти ключи 1,2,3, … стандартные значения, отображающие ошибки загрузки PHP, или это просто цифры?

Второй вопрос: существует ли другой способ для печати сообщений об ошибках в соответствии с этим сценарием без использования функции PHP и исключения эха?

Код выглядит следующим образом:

<?php // filename: upload.processor.php // first let's set some variables // make a note of the current working directory, relative to root. $directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); // make a note of the directory that will recieve the uploaded files $uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploaded_files/'; // make a note of the location of the upload form in case we need it $uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.form.php'; // make a note of the location of the success page $uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.success.php'; // name of the fieldname used for the file in the HTML form $fieldname = 'file'; // Now let's deal with the upload // possible PHP upload errors $errors = array(1 => 'php.ini max file size exceeded', 2 => 'html form max file size exceeded', 3 => 'file upload was only partial', 4 => 'no file was attached'); // check the upload form was actually submitted else print form isset($_POST['submit']) or error('the upload form is neaded', $uploadForm); // check for standard uploading errors ($_FILES[$fieldname]['error'] == 0) or error($errors[$_FILES[$fieldname]['error']], $uploadForm); // check that the file we are working on really was an HTTP upload @is_uploaded_file($_FILES[$fieldname]['tmp_name']) or error('not an HTTP upload', $uploadForm); // validation... since this is an image upload script we // should run a check to make sure the upload is an image @getimagesize($_FILES[$fieldname]['tmp_name']) or error('only image uploads are allowed', $uploadForm); // make a unique filename for the uploaded file and check it is // not taken... if it is keep trying until we find a vacant one $now = time(); while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'])) { $now++; } // now let's move the file to its final and allocate it with the new filename @move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename) or error('receiving directory insuffiecient permission', $uploadForm); // If you got this far, everything has worked and the file has been successfully saved. // We are now going to redirect the client to the success page. header('Location: ' . $uploadSuccess); // make an error handler which will be used if the upload fails function error($error, $location, $seconds = 5) { header("Refresh: $seconds; URL=\"$location\""); echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n". '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n". '<html lang="en">'."\n". ' <head>'."\n". ' <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n". ' <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n". ' <title>Upload error</title>'."\n\n". ' </head>'."\n\n". ' <body>'."\n\n". ' <div id="Upload">'."\n\n". ' <h1>Upload failure</h1>'."\n\n". ' <p>An error has occured: '."\n\n". ' <span class="red">' . $error . '...</span>'."\n\n". ' The upload form is reloading</p>'."\n\n". ' </div>'."\n\n". '</html>'; exit; } // end error handler ?> 

Solutions Collecting From Web of "Массив PHP для запуска сообщения об ошибке при загрузке файла"

Существует реальность, просто вникающая в логику кода.

Возьмите это:

 ($_FILES[$fieldname]['error'] == 0) or error($errors[$_FILES[$fieldname]['error']], $uploadForm); 

$_FILES[$fieldname]['error'] будет оценивать что-то, в этом случае целое число. == 0 – логическая логическая проверка; делает результат $_FILES[$fieldname]['error'] равным нулю?

Если это произойдет, мы продолжим.

Если это НЕ, мы переходим к следующей строке.

error(args) – это вызов функции, ошибка, определенная далее в коде. Эта функция принимает 3 аргумента, 2 из которых мы передаем, когда возникает ошибка.

Давайте сломаем это: error($errors[$_FILES[$fieldname]['error']], $uploadForm) , мы определили, что это вызов функции error() . $errors[$_FILES[$fieldname]['error']] – это первый аргумент, который передается этой функции. $uploadForm – это второй аргумент, который передается.

Давайте сломаем первый:

Если бы я спросил вас, что означает $errors[1] , что бы вы сказали? Ну, [1] – индекс errors массива, в этом случае я запрашиваю первый индексный номер или ключевое значение, которое имеет значение 'php.ini max file size exceeded' .

Поэтому, зная это, мы теперь имеем новую точку зрения на то, что означает $errors[$_FILES[$fieldname]['error']] . Если вы помните из того, что я сказал ранее, $_FILES[$fieldname]['error'] будет оценивать какое-то целочисленное значение, а так как это внутри [] , то какое бы это значение оно ни получилось, станет нашим индексом или значение ключа для массива errors .

Итак, у нас есть этот блок кода:

 ($_FILES[$fieldname]['error'] == 0) or error($errors[$_FILES[$fieldname]['error']], $uploadForm); 

Во время выполнения мы проверяем, $_FILES[$fieldname]['error'] ли $_FILES[$fieldname]['error'] нулю. Если это так, двигайтесь дальше, ошибки не было. Если он не равен нулю, запустите вторую строку, которая вызывает функцию error() , и передает в массив ошибок некоторый индекс (который относится к ошибке, которая была $uploadForm ), и значение $uploadForm .

Не видя кода полностью, или зная полный контекст вашего проекта, трудно сказать, что погода или нет, требуется эхо. Я могу сказать вам, что именно делает этот скрипт, если это помогает? Если ошибок не было, он перенаправляет пользователя на страницу успешной загрузки. Если были ошибки, то есть вызывается функция error (), этот скрипт генерирует совершенно новую страницу, содержащую сведения об ошибке. Конечно, есть и другие способы сделать это, но это быстро и просто.