Зацените скрипт загрузки изображений на сайт
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Зацените скрипт загрузки изображений на сайт - 2008-06-20 10:46:07.973333
|
|
|
$_Гоша
Сообщений: 255
Оценки: 0
Присоединился: 2008-06-18 02:55:58.033333
|
Когда-то давно мне попалась фотогалерея написаная Сад-Равеном. Я немножко покопался в тех скриптах. Мне они не очень понравились и я начал изменять. Сначала одно, потом другое и вот через пол года я переделал галерею полностью, так что от творения вышеупомянутого Сад-Равена ничего не осталось. Предлагаю вам оценить главный скрипт в этой галерее (скрипт загрузки изображений): <?
/*************************************1932@bk.ru******************************\
|---------------------------------======7bioz======----------------------------|
|_______________________________________2007__________________________________|
|_______________________________Входящие переменные___________________________|
|___Переменная___|Значение по умолчанию|_______________Описание________________|
|$smwidth________|_______220 пискелей___|_____ширина генерируемого изображения___|
|$smheight________|_______120 пикселей__|_____висота генерируемого изображения____|
|$datadir__________|_________foto________|____________куда его сохранять___________|
|$get_small_foto___|__________true________|__________сохраняет маленькое фото______|
|$get_big_foto_____|___________true_______|_______сохраняет большое изображение____|
|$quality__________|___________100_______|____качество генерируемного изображения__|
|$maxwidth________|______бесконечность__|______максимальная ширина загружаемого___|
|_________________|_____________________|______________________изображения______|
|$maxheight_______|______бесконечность___|_____максимальная висота загружаемого____|
|_________________|_____________________|___________________изображения_________|
|$max_file_size_____|_____бесконечность___|________максимальный размер в байтах_____|
|_________________|_____________________|__________загружаемого изображения______|
|$copiright_________|___нету______________|___копирайт на изобрежении_______________|
|$r $g $b__________|_______190__0__0_____|__составляющие цвета копирайта в RGB_____|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Исходящие переменные~~~~~~~~~~~~~~~~~~~~~~~~~~~|
|$smallfoto - сгенерированое имя маленького изображения |
|$fotoname - сгенерированое имя большого изображения |
|$sm_width, $sm_height - соответственно ширина и висота маленького изображения |
|$size[0], $size[1] - соответственно ширина и висота большого изображения |
|$fotoksize - размер в килобайтах загруженого изображения |
\*****************************************************************************/
/*
<form action=['Wey_to_the_sсriрt'] method=post name=form enctype=\"multipart/form-data\">
<input type='file' name='file' size=31 ALT='Загрузить' class=maininput style='FONT-SIZE: 14px; '>
<input type=submit value='Добавить'>
</form>
*/
if (!isset($get_small_foto)) $get_small_foto=true;
if (!isset($get_big_foto)) $get_big_foto=true;
/**********************************************************\
|___________________Обробка изображения_____________________|
\**********************************************************/
if (isset($_FILES['file']['name']) and $_FILES['file']['name']!="")
{if (!isset($datadir))
{$datadir="foto";
if (!is_dir("foto"))
{if (!mkdir("foto"))
Print "<SCRIPT language='jаvаsсript'>
alert('Не могу создать папку foto! \n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу создать папку foto</nosсriрt>";
exit;}
}
elseif (!is_dir($datadir))
{if (!mkdir($datadir))
Print "<SCRIPT language='jаvаsсript'>
alert('Не могу создать папку $datadir \n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу создать папку $datadir</nosсriрt>";
exit;}
if (isset($_FILES['file']['name']))
{$fotoname = $_FILES['file']['name'];} // определяем имя файла
else
{Print "<SCRIPT language='jаvаsсript'>
alert('Не могу определить имя загружаемого изображения \n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу определить имя загружаемого изображения</nosсriрt>";exit;}
if (isset($_FILES['file']['size']))
{$fotosize=$_FILES['file']['size'];} // Запоминаем размер файла
else
{Print "<SCRIPT language='jаvаsсript'>
alert('Не могу определить размер загружаемого изображения.\n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу определить размер загружаемого изображения</nosсriрt>";exit;}
$valid_images=array("gif","jpg","png","jpeg");// проверяем расширение файла
$ext = strtolower(substr($fotoname, 1 + strrpos($fotoname, ".")));
if (!in_array($ext, $valid_images)) {
Print "
<SCRIPT language='jаvаsсript'>
alert('ФАЙЛ НЕ загружен. Возможные причины:\\n - разрешена загрузка только файлов с такими расширениями: gif, jpg, png, jpeg.\\n - Вы пытаетесь загрузить не графический файл;\\n - неверно введён адрес или выбран файл')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>ФАЙЛ НЕ загружен. Возможные причины: - разрешена загрузка только файлов с такими расширениями: gif, jpg, png, jpeg. - Вы пытаетесь загрузить не графический файл; - неверно введён адрес или выбран файл')</nosсriрt>"; exit;}
/*************************************************************\
|______________________ЗАЩИТЫ от ВЗЛОМА_______________________|
\*************************************************************/
/* 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН!*/
$findtchka=substr_count($fotoname, ".");
if ($findtchka>1)
{Print " <SCRIPT language='jаvаsсript'>
alert('ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО! \n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО!</nosсriрt>"; exit;}
/* 2. если в имени есть .php, .html, .htm - свободен!*/
$bago="Извините. В имени ФАйла <B>запрещено</B> использовать .php, .html, .htm";
if (preg_match("/\.php/i",$fotoname))
{Print " <SCRIPT language='jаvаsсript'> alert('Вхождение *.php найдено.".$bago."')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Вхождение *.php найдено.".$bago."</nosсriрt>"; exit;}
if (preg_match("/\.html/i",$fotoname))
{Print " <SCRIPT language='jаvаsсript'> alert('Вхождение *.html найдено.".$bago."')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Вхождение *.html найдено.".$bago."</nosсriрt>"; exit;}
if (preg_match("/\.htm/i",$fotoname))
{Print " <SCRIPT language='jаvаsсript'> alert('Вхождение *.htm найдено.".$bago."')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Вхождение *.htm найдено.".$bago."</nosсriрt>"; exit;}
/***********************************************************\
|___Генерация уникального имени для большого изображения____|
\***********************************************************/
do
{$chars=array('a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z','A','B','C','D',
'E','F','G','H','I','J','K','L','M','N',
'O','P','Q','R','S','T','U','V','W','X',
'Y','0','1','2','3','4','5','6','7','8','9');
$cnt=count($chars);
$cnt--;
$rend=0;
$newname="";
while ($rend<=10)
{$result=mt_rand(0,$cnt);
$newname=$newname.$chars[$result];
$rend++;}
$fotoname=$newname.".".$ext;
}
While(is_file($datadir."/".$fotoname));
/*_____________________Заливаем исходное изображение на сервер________________*/
if (!copy($_FILES['file']['tmp_name'], $datadir.'/'.$fotoname))
{Print " <SCRIPT language='jаvаsсript'>
alert('ФАЙЛ НЕ ЗАГРУЖЕН! Ошибка сервера, обратитесь к администратору.')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>ФАЙЛ НЕ ЗАГРУЖЕН! Ошибка сервера, обратитесь к администратору</nosсriрt>"; exit;}
$size=getimagesize("$datadir/$fotoname");
/*_______________Если габариты фото больше чем нада___________________________*/
if (isset($maxwidth) and isset($maxheight))
{if ($size[0]>$maxwidth or $size[1]>$maxheight)
{ if ($size[2]="0")
{$im=ImageCreateFromGif("$datadir/$fotoname");}
elseif($size[2]="1")
{$im=ImageCreateFromJpeg("$datadir/$fotoname");}
elseif ($size[2]="2")
{$im=ImageCreateFromPng("$datadir/$fotoname");}
else
{Print"
<SCRIPT language='jаvаsсript'>
alert('Неизвеснтый формат файл \n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Неизвеснтый формат файл</nosсriрt>";
exit;}
$ratio_w=$size[0]/$maxwidth;
$ratio_h=$size[1]/$maxheight;
if ($ratio_h>$ratio_w)
{$sm_height=$maxheight;
$sm_width=$size[0]/$ratio_h;}
else
{$sm_width=$maxwidth;
$sm_height=$size[1]/$ratio_w;}
$i_dast=imagecreatetruecolor($sm_width, $sm_height);
$tc=imageColorClosest($i_dast,0,255,0);
imagecolorTransparent($i_dast, $tc);
if (!imagecopyresampled($i_dast, $im, 0, 0, 0, 0, $sm_width, $sm_height, $size[0], $size[1]))
{Print"<SCRIPT language='jаvаsсript'>
alert('Ошибка МАСШАБИРОВАНИЯ фото! Поблемы с GD-библиотекой! Обратитесь к Администратору')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Ошибка МАСШАБИРОВАНИЯ фото! Поблемы с GD-библиотекой! Обратитесь к Администратору</nosсriрt>";
if (!unlink($datadir.'/'.$fotoname))
{Print"<SCRIPT language='jаvаsсript'>
alert('Не мог удалить файл $datadir.'/'.$fotoname')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не мог удалить файл $datadir.'/'.$fotoname </nosсriрt>";
exit;}
exit;}
if (!isset($quality))
{$quality=100;}
$dest=$datadir."/".$fotoname;
if (!imageJpeg($i_dast, $dest, $quality))
{Print"<SCRIPT language='jаvаsсript'>
alert('Не могу создать масштабированое изображение $dest')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу создать масштабированое изображение $dest</nosсriрt>";
exit;}
if (!imageDestroy($im))
{Print"<SCRIPT language='jаvаsсript'>
alert('Не могу удалить образ $im')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу удалить образ $im</nosсriрt>";
exit;}
if (!imageDestroy($i_dast))
{Print"<SCRIPT language='jаvаsсript'>
alert('Не могу удалить образ $i_dast')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу удалить образ $i_dast</nosсriрt>";
exit;}
if (is_file($datadir."/".$fotoname) and !$get_big_foto)
{if (!unlink($datadir.'/'.$fotoname))
{Print"<SCRIPT language='jаvаsсript'>
alert('Не могу удалить изображение $datadir/$fotoname')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу удалить изображение $datadir/$fotoname</nosсriрt>";
exit;}
unset($fotoname);
unset($size[0]);
unset($size[1]);}
}
}
/*_____________Если размер в байтах больше чем нада___________________________*/
$fotoksize=filesize("$datadir/$fotoname");
If (isset($max_file_size))
{if ($fotoksize>$max_file_size)
{ $max_file_size=$max_file_size/1024;
Print " <SCRIPT language='jаvаsсript'>
alert('ФАЙЛ НЕ ЗАГРУЖЕН! Его размер дожен быть не больше $max_file_size кб. ')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>";
if (!unlink($datadir.'/'.$fotoname))
{Print"<SCRIPT language='jаvаsсript'>
alert('Не могу удалить изображение $datadir/$fotoname')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу удалить изображение $datadir/$fotoname</nosсriрt>";
exit;}
exit;}
}
$fotoksize=$fotoksize/1024;
/***************************************************************\
|__Если необходимо маленькое фото, подключается этот модуль_____|
\**************************************************************/
if($get_small_foto)
{ $size=getimagesize("$datadir/$fotoname");
if(!isset($smwidth) or !isset($smheight))
{$smwidth=220;
$smheight=120;}
if ($size[0]<=$smwidth and $size[1]<=$smheight)
{$smallfoto="$fotoname";}
else
{ do{ $chars=array('a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z','A','B','C','D',
'E','F','G','H','I','J','K','L','M','N',
'O','P','Q','R','S','T','U','V','W','X',
'Y','0','1','2','3','4','5','6','7','8','9');
$cnt=count($chars);
$cnt--;
$rend=0;
$smallfoto1="";
while ($rend<=10)
{$result=mt_rand(0,$cnt);
$smallfoto1=$smallfoto1.$chars[$result];
$rend++;}
$smallfoto=$smallfoto1.".".$ext;}
While(file_exists($datadir.'/'.$smallfoto));
if ($size[2]="0")
{$im=ImageCreateFromGif("$datadir/$fotoname");}
elseif($size[2]="1")
{$im=ImageCreateFromJpeg("$datadir/$fotoname");}
elseif ($size[2]="2")
{$im=ImageCreateFromPng("$datadir/$fotoname");}
else
{Print"
<SCRIPT language='jаvаsсript'>
alert('Неизвеснтый формат созданого файла \n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Неизвеснтый формат созданого файла</nosсriрt>";
exit;}
$ratio_w=$size[0]/$smwidth;
$ratio_h=$size[1]/$smheight;
if ($ratio_h>$ratio_w)
{$sm_height=$smheight;
$sm_width=$size[0]/$ratio_h;}
else
{$sm_width=$smwidth;
$sm_height=$size[1]/$ratio_w;}
$i_dast=imagecreatetruecolor($sm_width, $sm_height);
$tc=imageColorClosest($i_dast,0,255,0);
imagecolorTransparent($i_dast, $tc);
if (!imagecopyresampled($i_dast, $im, 0, 0, 0, 0, $sm_width, $sm_height, $size[0], $size[1]))
{Print"<SCRIPT language='jаvаsсript'>
alert('Ошибка МАСШАБИРОВАНИЯ фото! Поблемы с GD-библиотекой! Обратитесь к Администратору')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Ошибка МАСШАБИРОВАНИЯ фото! Поблемы с GD-библиотекой! Обратитесь к Администратору</nosсriрt>";
if (!unlink($datadir.'/'.$fotoname))
{Print"<SCRIPT language='jаvаsсript'>
alert('Не могу удалить изображение $datadir/$fotoname')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Не могу удалить изображение $datadir/$fotoname</nosсriрt>";
exit;}
exit;}
if (!isset($quality))
{$quality=100;}
$dest=$datadir."/".$smallfoto;
imageJpeg($i_dast, $dest, $quality) ;
imageDestroy($im);
imageDestroy($i_dast);
if (is_file($datadir."/".$fotoname))
if (!$get_big_foto)
{unlink($datadir.'/'.$fotoname);
unset($fotoname);
unset($size[0]);
unset($size[1]);}
}
}
else {$smallfoto=""; $sm_width=0; $sm_height=0;}
if (is_file($datadir."/".$fotoname) and isset ($copiright))
{ if (!isset($r))$r=190;
if (!isset($g))$g=0;
if (!isset($b))$b=0;
if ($size[2]="0")
{$im=ImageCreateFromGif("$datadir/$fotoname");}
elseif($size[2]="1")
{$im=ImageCreateFromJpeg("$datadir/$fotoname");}
elseif ($size[2]="2")
{$im=ImageCreateFromPng("$datadir/$fotoname");}
else
{Print"
<SCRIPT language='jаvаsсript'>
alert('Неизвеснтый формат созданого файла \n')</sсriрt>;
<SCRIPT language='jаvаsсript' > jаvаsсript:history.back(1)</sсriрt>
<nosсriрt>Неизвеснтый формат созданого файла</nosсriрt>";
exit;}
imagestring($im, 20, 10, 5, $copiright, imagecolorallocate($im, $r,$g,$b));
$dest=$datadir."/".$fotoname;
if (!isset($quality))
{$quality=100;}
imageJpeg($im, $dest, $quality) ;
imageDestroy($im);
}
}
else {$smallfoto=""; $sm_width=0; $sm_height=0; $fotoname=""; $fotoksize=""; $size[0]=0; $size[1]=0;}
?>
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-20 11:07:47.533333
|
|
|
Панда
Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
|
про ооп когданить слышал?
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-20 11:52:58.010000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
Просьба к ТС, оформить код в теги , тк полетело все форматирование, а читать код таком виде сложно.
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-20 20:53:10.620000
|
|
|
$_Гоша
Сообщений: 255
Оценки: 0
Присоединился: 2008-06-18 02:55:58.033333
|
quote:
ORIGINAL: Панда про ооп когданить слышал? что именно ты имееш ввиду: Общество охраны природы Общество одиноких программистов Объектно-ориентированное программирование Объектно-ориентированное проектирование Особенность-ориентированное позиционирование Орган опеки и попечительства Организация освобождения Палестины :D:D:D:D:D:D:D
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-20 21:45:12.483333
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
опщество охраны природы канеш. тыж на сайте гринписа
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-20 21:54:20.360000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
ТС, когда я говорил про форматирование, я имел в виду отступы)
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-21 02:24:38.240000
|
|
|
NfeRN0
Сообщений: 15
Оценки: 0
Присоединился: 2008-06-21 01:55:43.230000
|
quote:
ORIGINAL: Панда про ооп когданить слышал? +1 От себя добавлю что вышеуказанный скрипт далёк от идеала даже для линейного программирования.
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-21 21:04:10.876666
|
|
|
d0lph1n
Сообщений: 411
Оценки: 0
Присоединился: 2006-09-14 17:55:51.653333
|
quote:
От себя добавлю что вышеуказанный скрипт далёк от идеала даже для линейного программирования. Ай-яй-яй, как нехорошо использовать термины, значения которых не знаешь, для начала советую почитать, что же такое линейное программирование http://ru.wikipedia.org/wiki/Линейное_программирование Коротко: Линейное программирование - область математики Объектно-ориентированное программирование - парадигма программирования, как и процедурное, структурное (в данном случае) и другие quote:
После двоеточия идёт ненумерованный список терминов, следовательно каждая новая строчка должна начинаться со знака дефис и следующее за ним слово должно начинаться с строчной буквы, в конце элемента списка(если он не последний) ставится точка с запятой. Что, будем проверять грамматику? Да запросто, в цитате, которую я привел выше пропущено 2 запятых. ЗЫ Не я начал, но сдаваться я не привык.
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-21 23:07:14.583333
|
|
|
NfeRN0
Сообщений: 15
Оценки: 0
Присоединился: 2008-06-21 01:55:43.230000
|
Вам с такими замашками на правильность речи нужно на форум экслера. Что ж, очевидно мне стоило быть более грамотным. Под "линейным программированием" я подразумевал линейность и простоту программы, а именно: http://www.finam.ru/dictionary/wordf019BF/default.asp?n=4 И раз уж зашла речь о грамотности: quote:
Коротко: Линейное программирование - область математики Объектно-ориентированное программирование - парадигма программирования, как и процедурное, структурное (в данном случае) и другие После двоеточия идёт ненумерованный список терминов, следовательно каждая новая строчка должна начинаться со знака дефис и следующее за ним слово должно начинаться с строчной буквы, в конце элемента списка(если он не последний) ставится точка с запятой.
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-21 23:25:09.646666
|
|
|
Nightfly
Сообщений: 1381
Оценки: 0
Присоединился: 2004-03-12 11:46:07
|
даром огрызнулись - оно таки структурное.
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-22 01:22:25.763333
|
|
|
$_Гоша
Сообщений: 255
Оценки: 0
Присоединился: 2008-06-18 02:55:58.033333
|
вот тот же скрипт, только в цвеет: Кликай. Так виднее все элементы
|
|
|
RE: Зацените скрипт загрузки изображений на сайт - 2008-06-23 03:26:58.506666
|
|
|
Панда
Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
|
if (is_file($datadir."/".$fotoname) and isset ($copiright))
do ... while()...
редкие явления)
|
|
|
|
|