POFIGISST » 2011.08.17 02:33

скажите плиз,как можно сделать загрузку картинки в определенную папку,при этом чтоб её размеры проверялись,и при выгрузке чтоб путь к ней прописывался в базе,например загрузил картинку,она автоматом попадает в папку сайт.ру/картинки/ ,и при этом в поле базы заноситься имя картинки с форматом,примерно так olololo.gif ,и потом уже на страницу выводит сайт.ру/картинки/название из базы ))и вообще можно ли такое сделать?

tipsun » 2011.08.17 02:38

http://php.su/phphttp/?uploads
http://php.su/articles/?cat=examples&page=017

POFIGISST » 2011.08.17 03:33

tipsun спасиб))с загрузкой файла разобрался,теперь не знаю как сделать изменение имени файла,на id того человека который закинул этот файл(((

TLENS » 2011.08.17 06:07

Вот простенький код накатал.

Код:

1
span style="color: #0000BB"><?php$url = 'http://the-best-xxx.ru/img/136998.gif';$dir = './img';$name = basename($url);$patch = $dir . '/' . $name;if (@copy($url, $patch)) { $info = @getimagesize($patch); if (!is_array($info)) { if (file_exists($patch)) { @unlink($patch); } exit('Error: Это не картинка'); }} else { exit('Error: Не возможно загрузить');}echo 'name: ' . $name . '<br />' .'width: ' . $info[0] . '<br />' .'height: ' . $info[1] . '<br />' .'size: ' . filesize($patch) . ' bit<br />';?>
Gemorroj » 2011.08.17 11:12

$info еще хорошо бы проверить на то, что это именно png, gif или jpeg. а так туда, например, и swf попадет.

TLENS » 2011.08.17 16:27

Gemorroj
Только бы страница 404 не попадала ну и прочие.
А в общем в кода много еще недостатков например проверки на существование и добавление md5 в имя.
спс буду знать на счет swf

Gemorroj » 2011.08.17 16:35

http://php.net/getimagesize

1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(orden de bytes intel), 8 = TIFF(orden de bytes motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM.

TLENS » 2011.08.17 16:38

Ого не знал

POFIGISST » 2011.08.17 18:04

Код:

1
span style="color: #0000BB"><?php$allowed_filetypes = array('.jpg','.gif'); //разрешенный формат$max_filesize = 20480; //макс. размер в байтах$upload_path = './files3/'; //папка куда закидываються файлы$filename = $_FILES['userfile']['name'];$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); if(!in_array($ext,$allowed_filetypes))die('Данный тип файла не поддерживается.');if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)die('Фаил слишком большой.');if(!is_writable($upload_path))die('Невозможно загрузить фаил в папку. Установите права доступа - 777.');// Загружаем фаил в указанную папку.if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)){echo 'Ваш фаил успешно загружен <a href="' . $upload_path . $filename . '">смотреть</a>'; }else{echo 'При загрузке возникли ошибки. Попробуйте ещё раз.';}?>

я вчера написал так загрузку,но мне сказали что с такой функцией нельзя добиться чего я хочу(((

TLENS » 2011.08.17 18:08

Слушай скачай какой нить движок например wapmotor 18 там куча примеров на любую потребность. и загрузка на сайт то же там есть.
И не надо изобретать велосипед.

POFIGISST » 2011.08.17 18:12

TLENS написал:

Слушай скачай какой нить движок например wapmotor 18 там куча примеров на любую потребность. и загрузка на сайт то же там есть.
И не надо изобретать велосипед.

ротор вчера уже скачал,смотрел как там авы идут,и нифига не разобрался((

Gemorroj » 2011.08.17 18:34

POFIGISST, не оптимальный код. действительно. лучше посмотри примеры. только вот я бы не рекомендовал вап движки.

POFIGISST » 2011.08.17 18:39

Gemorroj написал:

POFIGISST, не оптимальный код. действительно. лучше посмотри примеры. только вот я бы не рекомендовал вап движки.

а если фо взять за пример,например такой как тут http://sh.kraftmax.ru/ стоит,если не ошибаюсь то там твой мод фо))

Gemorroj » 2011.08.17 18:41

POFIGISST, бери что хочешь. мой мод - не гарантия качества.

TLENS » 2011.08.17 18:44

Так тебе надо именно с картинками?.
Если тебе надо просто пример загрузки картинок то бери пример. Главное что бы ты понял как скрипт работает

POFIGISST » 2011.08.17 18:44

Gemorroj написал:

POFIGISST, бери что хочешь. мой мод - не гарантия качества.

ну так если твой мод,значить более менее знаешь какой там код,и если что,можно будет обращаться с вопросами))
Добавлено спустя   1 минуту  53 секунды:

TLENS написал:

Так тебе надо именно с картинками?.
Если тебе надо просто пример загрузки картинок то бери пример. Главное что бы ты понял как скрипт работает

да,мне пока нужны только картинки,я хочу сделать загрузку юзерами личных аватарок=))

TLENS » 2011.08.17 18:47

Блин ну возьми пример загрузки аватарок.

POFIGISST » 2011.08.17 18:48

TLENS написал:

Блин ну возьми пример загрузки аватарок.

ну я же грю что брал вчера в роторе копался,правда не разобрался,ща зц скачал один,возьму его за пример))

Gemorroj » 2011.08.17 18:52

POFIGISST, нет, я их ковырял очень давно.

POFIGISST » 2011.08.17 22:34

Оттопырил код с базой,специально под авы,только в коде какая то ошибка,я даже не могу сказать в какой строке она((((код выложу,подскажите пожалуйста строчку и примерную ошибку,только не исправляйте её,я сам хочу найти её((( вот сам код

Код:

1
lt;?require'config.php';aut();who_add(0,'enter');function passgen($k_simb=8, $types=3) {$password="";$small="abcdefghijklmnopqrstuvwxyz";$large="ABCDEFGHIJKLMNOPQRSTUVWXYZ";$numbers="1234567890";mt_srand((double)microtime()*1000000); for ($i=0; $i<$k_simb; $i++) { $type=mt_rand(1,min($types,3));switch ($type) {case 3:$password.=$large[mt_rand(0,25)];break;case 2:$password.=$small[mt_rand(0,25)];break;case 1:$password.=$numbers[mt_rand(0,9)];break;}}return $password;}$passgen=&passgen();if (mysql_result(mysql_query("SELECT COUNT(*) FROM `avatar` WHERE `kto` = '$user[id]' LIMIT 1",$db), 0)==0){echo 'У вас аватар еще не установлен';}else{$s = mysql_query ("Select * from `avatar` where `kto` = '$user[id]'");$izm = mysql_fetch_array ($s);echo '<img src="'.$izm['sil'].'" alt=""/><br/>';}if (isset($_FILES['loadfile']['tmp_name'])) {if (is_uploaded_file($_FILES['loadfile']['tmp_name'])) {$filename = che(strtolower($_FILES['loadfile']['name']));if (preg_match('|^[a-z0-9_\.\-]+$|i', $filename)) {$arrext = explode(',', 'jpg,jpeg,gif,png,bmp');$ext = strtolower(substr(strrchr($filename, '.'), 1));if (in_array($ext, $arrext) && $ext != 'php') {if (!preg_match('/\.(php|pl|cgi|phtml|htaccess)/i', $filename)) {if ($_FILES['loadfile']['size'] > 0 && $_FILES['loadfile']['size'] <= 50*1000) {$dir = 'avatar/';$put = $dir.$passgen.''.$filename;move_uploaded_file($_FILES['loadfile']['tmp_name'], $put);chmod($put, 0666);$photo_giz = getimagesize($put);if (!isset($photo_giz[0] ) && !isset($photo_giz[1])){$err='Ошибка! Файл не допустим!';echo 'Ошибка! Файл не допустим!';unlink($put);}}else{$err='Ошибка!';echo 'Ошибка! Максимальный размер загружаемого файла 50 кб';} }else{$err='Ошибка!';echo 'Ошибка! В названии файла присутствуют недопустимые расширения!';} }else{$err='Ошибка! ';echo 'Ошибка! Недопустимое расширение файла!';} }else{$err='Ошибка! В названии файла присутствуют недопустимые символы!';echo 'Ошибка! В названии файла присутствуют недопустимые символы!';} }if(!isset($err)){if (mysql_result(mysql_query("SELECT COUNT(*) FROM `avatar` WHERE `kto` = '$user[id]' LIMIT 1",$db), 0)==0){mysql_query("INSERT INTO `avatar` (kto,sil) values ('$user[id]','$put')");}else{mysql_query("UPDATE `avatar` SET `sil` = '$put' WHERE `kto` = '$user[id]' LIMIT 1");}}}echo '<form action="avatar.php" method="post" enctype="multipart/form-data">';echo 'Выберите файл для загрузки <br/>';echo 'при загрузке нового аватара, старый удаляется<br/>';echo '<input type="file" name="loadfile" /><br/>';echo '<input style="background-color: #3A88D7; color: #FFFFFF; border: 1px solid #3A88D7" type="submit" value="Загрузить" />';echo '</form>';echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>

но нифига не выводит,только белая страница(((
Добавлено спустя   1 минуту  26 секунд:
хотя валидатором проверяю,ошибок нету((

Gemorroj » 2011.08.17 23:11

пиши всегда <?php, а не <?
mt_srand((double)microtime()*1000000);  - это убери вообще. это для php 4
$passgen=&passgen(); - амперсанд убери
синтаксических ошибок тут нет. они могут быть в подключаемых файлах.

POFIGISST » 2011.08.17 23:20

Спасибо Паш,убрал ))
вот так получилось

Код:

1
span style="color: #0000BB"><?phprequire'config.php';aut();who_add(0,'enter');function passgen($k_simb=8, $types=3) {$password="";$small="abcdefghijklmnopqrstuvwxyz";$large="ABCDEFGHIJKLMNOPQRSTUVWXYZ";$numbers="1234567890";for ($i=0; $i<$k_simb; $i++) { $type=mt_rand(1,min($types,3));switch ($type) {case 3:$password.=$large[mt_rand(0,25)];break;case 2:$password.=$small[mt_rand(0,25)];break;case 1:$password.=$numbers[mt_rand(0,9)];break;}}return $password;}$passgen=passgen();if (mysql_result(mysql_query("SELECT COUNT(*) FROM `avatar` WHERE `kto` = '$user[id]' LIMIT 1",$db), 0)==0){echo 'У вас аватар еще не установлен';}else{$s = mysql_query ("Select * from `avatar` where `kto` = '$user[id]'");$izm = mysql_fetch_array ($s);echo '<img src="'.$izm['sil'].'" alt=""/><br/>';}if (isset($_FILES['loadfile']['tmp_name'])) {if (is_uploaded_file($_FILES['loadfile']['tmp_name'])) {$filename = che(strtolower($_FILES['loadfile']['name']));if (preg_match('|^[a-z0-9_\.\-]+$|i', $filename)) {$arrext = explode(',', 'jpg,jpeg,gif,png,bmp');$ext = strtolower(substr(strrchr($filename, '.'), 1));if (in_array($ext, $arrext) && $ext != 'php') {if (!preg_match('/\.(php|pl|cgi|phtml|htaccess)/i', $filename)) {if ($_FILES['loadfile']['size'] > 0 && $_FILES['loadfile']['size'] <= 50*1000) {$dir = 'avatar/';$put = $dir.$passgen.''.$filename;move_uploaded_file($_FILES['loadfile']['tmp_name'], $put);chmod($put, 0666);$photo_giz = getimagesize($put);if (!isset($photo_giz[0] ) && !isset($photo_giz[1])){$err='Ошибка! Файл не допустим!';echo 'Ошибка! Файл не допустим!';unlink($put);}}else{$err='Ошибка!';echo 'Ошибка! Максимальный размер загружаемого файла 50 кб';} }else{$err='Ошибка!';echo 'Ошибка! В названии файла присутствуют недопустимые расширения!';} }else{$err='Ошибка! ';echo 'Ошибка! Недопустимое расширение файла!';} }else{$err='Ошибка! В названии файла присутствуют недопустимые символы!';echo 'Ошибка! В названии файла присутствуют недопустимые символы!';} }if(!isset($err)){if (mysql_result(mysql_query("SELECT COUNT(*) FROM `avatar` WHERE `kto` = '$user[id]' LIMIT 1",$db), 0)==0){mysql_query("INSERT INTO `avatar` (kto,sil) values ('$user[id]','$put')");}else{mysql_query("UPDATE `avatar` SET `sil` = '$put' WHERE `kto` = '$user[id]' LIMIT 1");}}}echo '<form action="avatar.php" method="post" enctype="multipart/form-data">';echo 'Выберите файл для загрузки <br/>';echo 'при загрузке нового аватара, старый удаляется<br/>';echo '<input type="file" name="loadfile" /><br/>';echo '<input style="background-color: #3A88D7; color: #FFFFFF; border: 1px solid #3A88D7" type="submit" value="Загрузить" />';echo '</form>';echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>
POFIGISST » 2011.08.17 23:30

всее,теперь работает,вот код рабочий))

Код:

1
span style="color: #0000BB"><?phprequire'config.php';head();aut();who_add(0,'enter');$passgen=rand(1,2000);if (mysql_result(mysql_query("SELECT COUNT(*) FROM `avatar` WHERE `kto` = '$user[id]' LIMIT 1"), 0)==0){echo 'У вас аватар еще не установлен';}else{$s = mysql_query ("Select * from `avatar` where `kto` = '$user[id]'");$izm = mysql_fetch_array ($s);echo 'Ваш текущий аватар<br/>';echo '<img src="'.$izm['sil'].'" alt=""/><br/>';}if (isset($_FILES['loadfile']['tmp_name'])) {if (is_uploaded_file($_FILES['loadfile']['tmp_name'])) {$filename = check(strtolower($_FILES['loadfile']['name']));if (preg_match('|^[a-z0-9_\.\-]+$|i', $filename)) {$arrext = explode(',', 'jpg,jpeg,gif,png,bmp');$ext = strtolower(substr(strrchr($filename, '.'), 1));if (in_array($ext, $arrext) && $ext != 'php') {if (!preg_match('/\.(php|pl|cgi|phtml|htaccess)/i', $filename)) {if ($_FILES['loadfile']['size'] > 0 && $_FILES['loadfile']['size'] <= 100*1000) {$dir = 'avatar/';$put = $dir.$passgen.''.$filename;move_uploaded_file($_FILES['loadfile']['tmp_name'], $put);chmod($put, 0666);$photo_giz = getimagesize($put);if (!isset($photo_giz[0] ) && !isset($photo_giz[1])){$err='Ошибка! Файл не допустим!';echo'Ошибка! Файл не допустим!<br/>';unlink($put);}if(!isset($err)){if (mysql_result(mysql_query("SELECT COUNT(*) FROM `avatar` WHERE `kto` = '$user[id]' LIMIT 1"), 0)==0){mysql_query("INSERT INTO `avatar` (kto,sil) values ('$user[id]','$put')");header("location: avatar.php");}else{$s = mysql_query ("Select * from `avatar` where `kto` = '$user[id]'");$izm = mysql_fetch_array ($s);unlink($izm['sil']);mysql_query("UPDATE `avatar` SET `sil` = '$put' WHERE `kto` = '$user[id]' LIMIT 1");header("location: avatar.php");}}}else{$err='Ошибка! Максимальный размер загружаемого файла 100 кб';echo'Ошибка! Максимальный размер загружаемого файла 100 кб<br/>';} }else{$err='Ошибка! В названии файла присутствуют недопустимые расширения!';echo'Ошибка! В названии файла присутствуют недопустимые расширения!<br/>';} }else{$err='Ошибка! Недопустимое расширение файла!';echo'Ошибка! Недопустимое расширение файла!<br/>';} }else{$err='Ошибка! В названии файла присутствуют недопустимые символы!';echo'Ошибка! В названии файла присутствуют недопустимые символы!<br/>';} }else{$err='Вы не выбрали файл!';echo 'Вы не выбрали файл!<br/>';}}echo "<form method='post' enctype='multipart/form-data' action='avatar.php'>\n";echo "<input type='file' name='loadfile' accept='image/*,image/gif,image/png,image/jpeg' /><br />\n";echo "<input value='ЖмакаЙ' type='submit' />\n";echo "</form>\n";echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>

правда где ошибка была,я незнаю((

POFIGISST » 2011.08.18 21:17

Запутался я в базе((

хочу сделать чтоб можно было удалять личную аву,код мне подсказали такой

Код:

1
2
3
4
5
6
7
8
9
10
11
echo '<a href="?do=empty&amp;id=$user[id]">Удалить авку</a>';
if($_GET['do']=='empty')
{
$query=mysql_query("delete from `avatar` where `sil`='".$user[id]."'");
if($query)
{
echo 'Аватарка is удалена';
}
else
{
echo mysql_error();

только со значениями в базе не разберусь(( нужно чтоб ава удалялась именно у того чела,который кликнул по ссылке,на как это делать х\з((

Gemorroj » 2011.08.18 21:20

POFIGISST, не понимаю проблемы. у тебя SQL запрос составить не получается или что? где тут нужны знания программирования?

POFIGISST » 2011.08.18 21:23

Gemorroj написал:

POFIGISST, не понимаю проблемы. у тебя SQL запрос составить не получается или что? где тут нужны знания программирования?

ид человека находиться в другой табле ,а авы в другой табле,и вот незнаю как сделать запрос,чтоб аву удаляло только у того человека,который кликнул по ссылке,а не чтоб у всех юзеров((
Добавлено спустя   1 минуту  46 секунд:
если бы авы и ид были в одной таблице,то так бы смог,а из разных таблиц х.з как делать))

TLENS » 2011.08.18 21:32

Покажи структуру

POFIGISST » 2011.08.18 21:37

Вот скрин обеих таблиц(

Gemorroj » 2011.08.18 22:10

что такое kto?

TLENS » 2011.08.18 22:10

Поидее связка с юзером
Добавлено спустя   3 минуты  59 секунд:

Код:

1
2
3
4
5
6
7
8
9
$id = 1; // ид юзера
$q = mysql_query("SELECT * FROM `avatar` WHERE `kto` = '$id'");
if (mysql_num_rows($q)) {
$query=mysql_query("DELETE FROM `avatar` WHERE `kto`='$id'");
$row = mysql_fetch_array($q);
@unlink($patch . '/' . $row['sil']);
} else {
echo 'У вас нет аватара для удаления';
}
POFIGISST » 2011.08.18 22:24

kto,это отвечает за того кто закинул аву,спасибо всем,очень помогли,все работает))

и еще вопрос по коду который я всунул на вывод ав

Код:

1
2
3
4
5
6
$sit = $_SERVER['HTTP_HOST'];
 
 
if($izm['sil']!='')echo '<img src="'.$izm['sil'].'" alt="ava"/><br/>';
}
if($izm['sil']=='')echo '<img src="http://'.$sit.'/'.$inf['myavatar'].'"alt="ava"/><br/>';

все выводит нормально,просто может как то более лучше это можно сделать,подскажите пожалуйста))
Добавлено спустя   1 минуту  29 секунд:
переменная $sit задается в начале кода))

TLENS » 2011.08.19 15:01

Что это такое?
Пиши правильно $user['myavatar']

POFIGISST » 2011.08.19 23:18

Это такой код у меня,то есть идет проверка  if($izm['sil']!=''), если в поле sil занесен адрес авы,ну то есть там не пусто != то выведет аву которая там закинута,а если же личная ава не закинута и поле sil равно нулю,пустое,то выведет аву которая была выбрана из списка,но это говнокод,так как я не подумал что у юзера вообще не какой авы может не стоять,то есть поля будут пустые,и тогда система пытается вывести картинку if($izm['sil']=='') так как тут пусто(( сейчас буду делать проверку,чтоб если оба поля пусты были,то чтоб ничего не выводило)))

tipsun » 2011.08.19 23:34

Нормально/Говно?

Типа импортирует файлы
----
Ой не в ту тему написал.
Ну хотя это к загрузке картинок частично относится.

Код:

1
span style="color: #0000BB"><?php//CONFIG//define('PATH', 'uploads/');define('SIZE', 100); // 100 kBdefine('IMAGE', 200); // 200 px$allow = array('jpg', 'gif', 'png'); // *.type//CONFIG END////FUNCTIONS//function mb_strrTok($text=0, $symbol=0, $char='UTF-8') { if(!trim($text) or !trim($symbol)) return false; return mb_subStr($text, mb_strrPos($text, $symbol, 0, $char)+1, E_ALL, $char); }function sizeCheck($url) { $size = get_headers($url, 1); if(SIZE*1024 < $size['Content-Length']) return false; return $size['Content-Length']/1024; }function typeCheck($url) { GLOBAL $allow; $ext = mb_strrTok($url, '.'); if(!in_array($ext, $allow)) return false; return $ext; }function imgCheck($url) { if(false !== ($image = getImageSize($url)) and 4 > $image[2]) if(IMAGE < $image[0] or IMAGE < $image[1]) return false; return $image[0].'x'.$image[1]; }function getInfo($url) { //$url = 'http://' == subStr($url, 0, 7) ? $url : 'http://'.$url; $name = basename($url); if(/*false !== ($fsize = sizeCheck($url)) and */ false !== ($ftype = typeCheck($url)) and false !== (false !== strpos('jpg|png|gif', $ftype) ? $fres = imgCheck($url) : true)) { if(copy($url, PATH.$name)) return $name.' |'.$fsize.'/'.$ftype.'/'.$fres.'| ok<br/>'.PHP_EOL; else return $name.' | not copied<br/>'.PHP_EOL; } return $name.' | no<br/>'.PHP_EOL; }//FUNCTIONS END////GET DATA//$import = isset($_POST['import']) ? trim($_POST['import']) : null;foreach(preg_split('/\n/', $import) as $link) { $link = trim($link); if($link) { $log .= getInfo($link); } }//GET DATA END//exit('<html><body>'.$log.'</body></html>');?>
POFIGISST » 2011.08.19 23:38

tipsun эт код для чего?)))

tipsun » 2011.08.19 23:40

Ой не в ту тему написал.
Ну хотя это к загрузке картинок частично относится.
POFIGISST, извиняюсь.
----
Файлы импортирует.
Перез [enter] адреса файлов вводишь и все должно скопироваться.
- Надо только чуть настроить: папку, допустимый размер, допустимое разрешение для картинки.

POFIGISST » 2011.08.19 23:42

tipsun написал:

Ой не в ту тему написал.
Ну хотя это к загрузке картинок частично относится.
POFIGISST, извиняюсь.
----
Файлы импортирует.
Перез [enter] адреса файлов вводишь и все должно скопироваться.

та ничего,у мя тоже бывает с темами такое Гг )))

Gemorroj » 2011.08.19 23:43

tipsun, оформи в класс, добавь документацию в phpdoc стиле.

tipsun » 2011.08.19 23:46

Gemorroj, спс что посмотрел!
Бля с классами у меня беда, надо учить.
Добавлено спустя   4 минуты :
Думаю не будет лишнем.

Код:

1
span style="color: #0000BB"><?php if(!empty($import)) //foreach... ?>
POFIGISST » 2011.08.20 00:03

tipsun Сделай проверку картинки по размеру,чтоб не могли залить шелл или другую гадость с измененным форматом))

tipsun » 2011.08.20 01:23

Разрешение и так проверяется, и вес проверяется. Для теста на локалке закомментил проверку на вес и http:// убрал.
- - - -
Насчет шелл, а разве может быть такое?
Ну можно сделать чтоб проверка была на картинку, точнее на её разрешение, чтоб было не меньше 1x1. Иначе типа не картинка.
- - - -
Я еще хотел сделать множественный upload, но скорее всего не буду делать, по 1 файлу тоже не плохо :)
Думал этим же получится сделать, но лучше отдельно, там поменьше кода надо, все и так определяется.

POFIGISST » 2011.08.20 03:14

ну шелл это файл пхп,но с разными форматами незнаю,если закинуть например шелл с форматом gif ,тот как его потом на хосте переименовать в пхп,но такая защита есть(по пикселям проверяют) значить наверное и с шеллом можно замутить такую фигню,не просто так же защиту придумали)))

tipsun » 2011.08.20 04:16

Ну надо будет поискать инфу тогда.
Добавлено спустя   8 минут  58 секунд:
include($file) - вот действительно шелл, который кодеры сами создают. А загрузить не получится все равно, надо чтоб у файла было расширение *.php которое врядли пройдет, т.к. функция которая выводит расширение операется на первую точку справа. Все что до нее (справа) будет проверяться как формат файла. Если то, что содержит "до" не содержит массив, то файл загружен не будет.

POFIGISST » 2011.08.20 04:26

это как то так выглядит))

Код:

1
2
3
4
5
6
7
$photo_giz = getimagesize($put);
if (!isset($photo_giz[0] ) && !isset($photo_giz[1])){
$err='Ошибка! Файл не допустим!';
echo'Ошибка! Файл не допустим!
';
unlink($put);
}

З.Ы. в аську зайди если можешь))

tipsun » 2011.08.20 04:36

Тут ведь и тип проверяется.
Фиг знает, ща добавлю "если пусто"="ошибка".

Код:

1
span style="color: #0000BB"><?phpfunction imgCheck($url) { //тип if(false !== ($image = getImageSize($url)) and 4 > $image[2] and IMAGE > $image[0] and IMAGE > $image[1]) return $image[0].'x'.$image[1]; else return false; }?>
Gemorroj » 2011.08.20 08:58

POFIGISST, проверка размера - это не защита от шеллов.

tipsun » 2011.08.29 06:20

Можно:
- лог оставлять на потом.
- сделать, для удобства, указание строки разрешенных типов 'mp3,3gp,zip'
- сделать готовый вариант разрешенных типов или принимать указанные.
- сделать $load->run('file_list'); а так принимать $_POST[$var];

Код:

1
span style="color: #0000BB"><?php//....................path.....size..resol.......types.//$load = new import('loads/', 2024, 800, array('3gp', 'mp3', 'jpg', 'gif', 'png'));//echo $load->run($_POST['file_list']);class import { public $_path, $_size, $_image, $_allow; function __construct($path, $size, $image, $allow) { $this->_path = isset($path) ? $path : 0; // path $this->_size = isset($size) ? $size : 0; // kB $this->_image = isset($image) ? $image : 0; // [width]x[height] $this->_allow = is_array($allow) ? $allow : array(); // *.type } function mb_strrTok($text=0, $symbol=0, $char='UTF-8') { if (!trim($text) or !trim($symbol)) return false; return mb_subStr($text, 1+ mb_strrPos($text, $symbol, 0, $char), E_ALL, $char); } function typeCheck($url) { $ext = mb_strrTok($url, '.'); if (!in_array($ext, $this->_allow)) return false; return $ext; } function sizeCheck($url) { $size = get_headers($url, 1); $size = $size['Content-Length']/1024; if (empty($size) or $this->_size < $size) return false; return $size; } function imgCheck($url) { if (false !== ($image = getImageSize($url)) and 4 > $image[2] and 0 < $image[0] and 0 < $image[1] and $this->_image > $image[0] and $this->_image > $image[1]) return $image[0].'x'.$image[1]; return false; } function import($url) { $url = 'http://' == subStr($url, 0, 7) ? $url : 'http://'.$url; $name = baseName($url); if (false !== ($ftype = typeCheck($url)) and false !== ($fsize = sizeCheck($url)) and false !== ($fres = imgCheck($url))) { if (copy($url, $this->_path.$name)) return 'Copied: '.$name.' ('.$fsize.'/'.$ftype.'/'.$fres.')'.PHP_EOL; return 'Error : '.$name.PHP_EOL; } return 'Missed: '.$name.PHP_EOL; } function run($list) { $log = null; $import = isset($list) ? trim($list) : null; if (!empty($import)) { foreach (preg_split('/\n/', $import) as $link) { $link = trim($link); if ($link) { $log .= import($link); } } } else return 'Empty list'; return nl2br($log); } }?>
POFIGISST » 2011.08.29 15:26

Gemorroj написал:

POFIGISST, проверка размера - это не защита от шеллов.

я думал что от шеллов,так как у них нету пикселей(( а от чего эта защита?))

Gemorroj » 2011.09.01 11:36

POFIGISST, как это нет? getimagesize возвращает на мне известных шеллах 16к пикселей.