@ 2015-03-20T20:29:22Z <?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] .'×'. $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] .'×'. $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>';
?>
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
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:dark mode live preview
180.34 ms | 402 KiB | 265 Q