Intereting Posts
Некорректное числовое число, которое встречается – Невозможно воспроизвести mod_rewrite перенаправить корень uri в index.php CKEditor + Yii, загруженный AJAX: $ _POST не содержит обновленного значения Зачем использовать класс alisases? PHP. Есть ли возможность запуска GUI-программы через exec ()? CakePHP Entity не содержит внешнего ключа netbeans xdebug ждет подключения, несмотря на все ответы на форуме Ошибка при попытке использовать гибридный поток входа в Google OAuth 2.0 (Google_IO_Exception) с сообщением «Ошибка HTTP: невозможно подключиться:« 0 ») Объединяет ли соединение БД все, что важно? dompdf – текст на одной странице / page_script не работает Является ли обработка исключений python более эффективной, чем PHP и / или другие языки? PHP: доступ к Bluetooth GPS через последовательный порт (SPP) COM3 Предотвращение прямого доступа из URL-адреса $ _SERVER не работает в Mozilla Создание учетных записей электронной почты cPanel с помощью fopen

Строгая стандартная ошибка при загрузке изображения с помощью скрипта PHP

Я пытаюсь написать загрузчик изображений с php. Но я пытаюсь сделать ошибку.

Ошибка:

Строгие стандарты: только переменные должны передаваться по ссылке в C: \ xx \ xx \ xx \ profile_image_upload_script.php в строке 10

Строка 10: $extension = end(explode(".", $file_name_encrypted));


сценарий загрузки изображений

 <?php $allowedExts = array("gif", "jpeg", "jpg", "png"); $file_name = $_FILES["file"]["name"]; echo "File name:".$file_name; $file_name_encrypted = $file_name."".md5(rand(1, 1000000)); $extension = end(explode(".", $file_name_encrypted)); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 2097152) // 2 MB && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $file_name_encrypted . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024*1024) . " MB<br>"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; if (file_exists("upload/" . $file_name_encrypted)) { echo $file_name_encrypted . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $file_name_encrypted); echo "Stored in: " . "upload/" . $file_name_encrypted; } } } else { echo "Invalid file"; echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } ?> 

Примечание: скрипт получает имя файла из html-формы, нет проблем

Примечание. $file_name_encrypted не будет содержать действительное или совместимое расширение, потому что добавление имени файла с помощью md5:

$file_name_encrypted = $file_name."".md5(rand(1, 1000000));

например filename.jpg79054025255fb1a26e4bc422aef54eb4

Поэтому он никогда не будет соответствовать вашему массиву $allowedExts . Исправьте это тогда:

Измените эту строку:

 $extension = pathinfo($file_name_encrypted, PATHINFO_EXTENSION); 

Или взорвется, затем передайте функцию взорванную до конца ().

 $temp = explode(".", $file_name_encrypted); $extension = end($temp); 

Способ исправить это – сначала взорваться, а затем использовать этот массив в конце. end() должен получить свой параметр, переданный по ссылке, потому что он манипулирует внутренним указателем, но если нет ссылки на переменную, он не будет работать корректно.
Попробуй это
$array = explode(".", $file_name_encrypted);
тогда
$extension = end($array);