3v4l.org

run code in 300+ PHP versions simultaneously
<?php #начальная страница #функция проверки загружаемого файла function file_true_or_false() { if ($_FILES['img']['type'] == '') { echo '<div id="error">'. 'Выберите изображение.'. '</div>'; return; } if ($_FILES['img']['error'] != 0) { echo '<div id="error">'. 'Сбой загрузки изображения.'. '</div>'; return; } # считываем параметры (высота/ширина, тип и т.п.) # оригинальной картинки $img_original = getimagesize($_FILES['img']['tmp_name']); switch ($img_original[2]) { case 1: $type = '.gif'; break; case 2: $type = '.jpg'; break; case 3: $type = '.png'; break; default: echo '<div id="error">'. 'Файл не является изображением.<br>'. 'Разрешается загружать следующие форматы изображений: PNG, JPG, GIF.'. '</div>'; return; } $db = db_connect(); $result = $db->query ( "SELECT counter FROM img_counter" ); $name = $result->fetch_array(); $result = $db->query ( "UPDATE img_counter SET counter ='". ++$name[0] . "'" ); $db->close(); if (!copy($_FILES['img']['tmp_name'], getcwd() . '/image_original/'. $name[0] . $type)) { echo '<div id="error">'. 'Сбой загрузки изображения.<br>'. '</div>'; return; } $code_array = array( 'a','b','c','d','e','f', 'g','h','i','j','k','l', 'm','n','o','p','r','s', 't','u','v','x','y','z', 'A','B','C','D','E','F', 'G','H','I','J','K','L', 'M','N','O','P','R','S', 'T','U','V','X','Y','Z', '1','2','3','4','5','6', '7','8','9','0'); $db = db_connect(); $db->query ( "INSERT INTO img_information (type, original_width, original_height) VALUES ('". $type ."', '". $img_original[0] ."', '". $img_original[1] ."')" ); $db->close(); if (work_with_image($name[0], $type, $img_original)) { $img_200 = getimagesize(getcwd() . '/image_200/'. $name[0] . $type); echo '<div id="fileOK">'. 'Загрузка изображения прошла успешно.'. '</div>'. '<div id="view_image_div">'. '<div class="view_image_left_right">'. '<a target="_blank" href="./image_200/'. $name[0] . $type . '">'. $img_200[0] .'&times;'. $img_200[1] .'</a><br>'. '</div>'. '<div id="view_image_center">'. '<img id="view_image_img" src="./image_200/'. $name[0] . $type .'">'. '</div>'. '<div class="view_image_left_right">'. '<a target="_blank" href="./image_original/'. $name[0] . $type .'">'. $img_original[0] .'&times;'. $img_original[1] .'</a>'. '</div>'. '</div>'; } else { echo '<div id="error">'. $error . '</div>'; } } #функция уменьшения загружаемого изображения function work_with_image($name, $type, $img_original) { // ------------------------------ # ссылка на исходное изображение $source_src = getcwd() . '/image_original/'. $name . $type; # в зависимости от типа оригинальной картинки # применяем соответствующую функцию для считывания # и создания изображения с которым будем работать switch ($img_original[2]) { case 1: $source = imagecreatefromgif($source_src); break; case 2: $source = imagecreatefromjpeg($source_src); break; case 3: $source = imagecreatefrompng($source_src); } # максимально допустимый размер # (по ширине/высоте) уменьшенной картинки $max_size = 200; # если ширина или высота оригинальной картинки # больше ограничения производим вычисления if ( $img_original[0]>$max_size || $img_original[1]>$max_size ) { # выбираем большее: ширины или высота # оригинальной картинки if ( $img_original[0]>$img_original[1] ) $size = $img_original[0]; # ширина else $size = $img_original[1]; # высота # используя нехитрую пропорцию вычислям # ширину и высоту уменьшенной картинки $resource_width = floor($img_original[0] * $max_size / $size); $resource_height = floor($img_original[1] * $max_size / $size); # создание «подкладки» $resource = imagecreatetruecolor($resource_width, $resource_height); # изменение размера и копирование полученного на «подкладку» imagecopyresampled($resource, $source, 0, 0, 0, 0, $resource_width, $resource_height, $img_original[0], $img_original[1]); } # если изменять размер не надо просто присваиваем переменной # $resource идентификатор оригинальной картинки else $resource = $source; # путь и имя файла уменьшенной картинки $resource_src = getcwd() . '/image_200/'. $name . $type; # выводит уменьшенную картинку switch ($img_original[2]) { case 1: imagegif($resource, $resource_src); break; case 2: imagejpeg($resource, $resource_src); break; case 3: imagepng($resource, $resource_src); } // ------------------------------ return true; } #функция подключения к базе данных function db_connect() { return $mysqli = @new mysqli ( "localhost", "root", "", "php" ); } echo '<html>'. '<head>'. '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'. '<title>Загрузчик изображний</title>'. '<link href="style.css" rel="stylesheet" type="text/css">'. '</head>'. '<body>'. '<div id="fixed">'; $db = db_connect(); if (mysqli_connect_errno()) { echo '<div id="error">'. 'Ошибка подключения к базе данных: '. mysqli_connect_errno() . '</div>'. '</body>'. '</html>'; exit(); } $db->close(); echo '<div id="form">'. '<form method="post" enctype="multipart/form-data">'. '<input type="file" name="img">'. '<input id="upload" type="submit" value="Загрузить изображение">'. '</form>'. '<a href="index.php">'. 'В галерею'.'</a>'. '</div>'; if (isset($_FILES['img'])) file_true_or_false(); $db = db_connect(); $result = $db->query ( "SELECT id, type FROM img_information ORDER BY id DESC" ); $db->close(); echo '<br>'. '</div>'. '</body>'. '</html>'; ?>
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Загрузчик изображний</title><link href="style.css" rel="stylesheet" type="text/css"></head><body><div id="fixed"> Fatal error: Uncaught Error: Class "mysqli" not found in /in/dN40B:185 Stack trace: #0 /in/dN40B(204): db_connect() #1 {main} thrown in /in/dN40B on line 185
Process exited with code 255.
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.6 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Загрузчик изображний</title><link href="style.css" rel="stylesheet" type="text/css"></head><body><div id="fixed"> Fatal error: Uncaught Error: Class 'mysqli' not found in /in/dN40B:185 Stack trace: #0 /in/dN40B(204): db_connect() #1 {main} thrown in /in/dN40B on line 185
Process exited with code 255.
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Загрузчик изображний</title><link href="style.css" rel="stylesheet" type="text/css"></head><body><div id="fixed">
Process exited with code 255.

preferences:
180.34 ms | 402 KiB | 265 Q