Вы не зашли.
Главная » PHP » Загрузка картинки в папку)
#1. POFIGISST Off (6)
Участник
2011.08.17 02:02
скажите плиз,как можно сделать загрузку картинки в определенную папку,при этом чтоб её размеры проверялись,и при выгрузке чтоб путь к ней прописывался в базе,например загрузил картинку,она автоматом попадает в папку сайт.ру/картинки/ ,и при этом в поле базы заноситься имя картинки с форматом,примерно так olololo.gif ,и потом уже на страницу выводит сайт.ру/картинки/название из базы ))и вообще можно ли такое сделать?
#2. tipsun Off (19)
Moderator
2011.08.17 02:02
http://php.su/phphttp/?uploads
http://php.su/articles/?cat=examples&page=017
Отредактировано tipsun (2011.08.17 02:02)
#3. POFIGISST Off (6)
Участник
2011.08.17 03:03
tipsun спасиб))с загрузкой файла разобрался,теперь не знаю как сделать изменение имени файла,на id того человека который закинул этот файл(((
#4. TLENS Off (14)
Moderator
2011.08.17 06:06
Вот простенький код накатал.
Код:
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 />';?>
Отредактировано TLENS (2011.08.17 06:06)
#5. Gemorroj Off (107)
Administrator
2011.08.17 11:11
$info еще хорошо бы проверить на то, что это именно png, gif или jpeg. а так туда, например, и swf попадет.
#6. TLENS Off (14)
Moderator
2011.08.17 16:04
Gemorroj
Только бы страница 404 не попадала ну и прочие.
А в общем в кода много еще недостатков например проверки на существование и добавление md5 в имя.
спс буду знать на счет swf
Отредактировано TLENS (2011.08.17 16:04)
#7. Gemorroj Off (107)
Administrator
2011.08.17 16:04
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.
#8. TLENS Off (14)
Moderator
2011.08.17 16:04
Ого не знал
Отредактировано TLENS (2011.08.17 16:04)
#9. POFIGISST Off (6)
Участник
2011.08.17 18:06
Код:
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 'При загрузке возникли ошибки. Попробуйте ещё раз.';}?>
я вчера написал так загрузку,но мне сказали что с такой функцией нельзя добиться чего я хочу(((
#10. TLENS Off (14)
Moderator
2011.08.17 18:06
Слушай скачай какой нить движок например wapmotor 18 там куча примеров на любую потребность. и загрузка на сайт то же там есть.
И не надо изобретать велосипед.
#11. POFIGISST Off (6)
Участник
2011.08.17 18:06
TLENS написал:
Слушай скачай какой нить движок например wapmotor 18 там куча примеров на любую потребность. и загрузка на сайт то же там есть.
И не надо изобретать велосипед.
ротор вчера уже скачал,смотрел как там авы идут,и нифига не разобрался((
#12. Gemorroj Off (107)
Administrator
2011.08.17 18:06
POFIGISST, не оптимальный код. действительно. лучше посмотри примеры. только вот я бы не рекомендовал вап движки.
#13. POFIGISST Off (6)
Участник
2011.08.17 18:06
Gemorroj написал:
POFIGISST, не оптимальный код. действительно. лучше посмотри примеры. только вот я бы не рекомендовал вап движки.
а если фо взять за пример,например такой как тут http://sh.kraftmax.ru/ стоит,если не ошибаюсь то там твой мод фо))
#14. Gemorroj Off (107)
Administrator
2011.08.17 18:06
POFIGISST, бери что хочешь. мой мод - не гарантия качества.
#15. TLENS Off (14)
Moderator
2011.08.17 18:06
Так тебе надо именно с картинками?.
Если тебе надо просто пример загрузки картинок то бери пример. Главное что бы ты понял как скрипт работает
#16. POFIGISST Off (6)
Участник
2011.08.17 18:06
Gemorroj написал:
POFIGISST, бери что хочешь. мой мод - не гарантия качества.
ну так если твой мод,значить более менее знаешь какой там код,и если что,можно будет обращаться с вопросами))
Добавлено спустя   1 минуту  53 секунды:
TLENS написал:
Так тебе надо именно с картинками?.
Если тебе надо просто пример загрузки картинок то бери пример. Главное что бы ты понял как скрипт работает
да,мне пока нужны только картинки,я хочу сделать загрузку юзерами личных аватарокsmile)
#17. TLENS Off (14)
Moderator
2011.08.17 18:06
Блин ну возьми пример загрузки аватарок.
#18. POFIGISST Off (6)
Участник
2011.08.17 18:06
TLENS написал:
Блин ну возьми пример загрузки аватарок.
ну я же грю что брал вчера в роторе копался,правда не разобрался,ща зц скачал один,возьму его за пример))
#19. Gemorroj Off (107)
Administrator
2011.08.17 18:06
POFIGISST, нет, я их ковырял очень давно.
#20. POFIGISST Off (6)
Участник
2011.08.17 22:10
Оттопырил код с базой,специально под авы,только в коде какая то ошибка,я даже не могу сказать в какой строке она((((код выложу,подскажите пожалуйста строчку и примерную ошибку,только не исправляйте её,я сам хочу найти её((( вот сам код

Код:
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 секунд:
хотя валидатором проверяю,ошибок нету((
#21. Gemorroj Off (107)
Administrator
2011.08.17 23:11
пиши всегда <?php, а не <?
mt_srand((double)microtime()*1000000);  - это убери вообще. это для php 4
$passgen=&passgen(); - амперсанд убери
синтаксических ошибок тут нет. они могут быть в подключаемых файлах.
#22. POFIGISST Off (6)
Участник
2011.08.17 23:11
Спасибо Паш,убрал ))
вот так получилось

Код:
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();?>
#23. POFIGISST Off (6)
Участник
2011.08.17 23:11
всее,теперь работает,вот код рабочий))

Код:
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();?>
правда где ошибка была,я незнаю((
#24. POFIGISST Off (6)
Участник
2011.08.18 21:09
Запутался я в базе((

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

Код:
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();
только со значениями в базе не разберусь(( нужно чтоб ава удалялась именно у того чела,который кликнул по ссылке,на как это делать х\з((
#25. Gemorroj Off (107)
Administrator
2011.08.18 21:09
POFIGISST, не понимаю проблемы. у тебя SQL запрос составить не получается или что? где тут нужны знания программирования?
#26. POFIGISST Off (6)
Участник
2011.08.18 21:09
Gemorroj написал:
POFIGISST, не понимаю проблемы. у тебя SQL запрос составить не получается или что? где тут нужны знания программирования?
ид человека находиться в другой табле ,а авы в другой табле,и вот незнаю как сделать запрос,чтоб аву удаляло только у того человека,который кликнул по ссылке,а не чтоб у всех юзеров((
Добавлено спустя   1 минуту  46 секунд:
если бы авы и ид были в одной таблице,то так бы смог,а из разных таблиц х.з как делать))
#27. TLENS Off (14)
Moderator
2011.08.18 21:09
Покажи структуру
#28. POFIGISST Off (6)
Участник
2011.08.18 21:09
Вот скрин обеих таблиц(
Вложения
ava.png 13kb {788x270} [загрузок: 754]
user.png 43kb {1439x681} [загрузок: 701]
#29. Gemorroj Off (107)
Administrator
2011.08.18 22:10
что такое kto?
#30. TLENS Off (14)
Moderator
2011.08.18 22:10
Поидее связка с юзером
Добавлено спустя   3 минуты  59 секунд:
Код:
$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 'У вас нет аватара для удаления';
}
Отредактировано TLENS (2011.08.18 22:10)
#31. POFIGISST Off (6)
Участник
2011.08.18 22:10
kto,это отвечает за того кто закинул аву,спасибо всем,очень помогли,все работает))

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

Код:
$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 задается в начале кода))
Отредактировано POFIGISST (2011.08.19 23:11)
#32. TLENS Off (14)
Moderator
2011.08.19 15:03
Что это такое?
Пиши правильно $user['myavatar']
#33. POFIGISST Off (6)
Участник
2011.08.19 23:11
Это такой код у меня,то есть идет проверка  if($izm['sil']!=''), если в поле sil занесен адрес авы,ну то есть там не пусто != то выведет аву которая там закинута,а если же личная ава не закинута и поле sil равно нулю,пустое,то выведет аву которая была выбрана из списка,но это говнокод,так как я не подумал что у юзера вообще не какой авы может не стоять,то есть поля будут пустые,и тогда система пытается вывести картинку if($izm['sil']=='') так как тут пусто(( сейчас буду делать проверку,чтоб если оба поля пусты были,то чтоб ничего не выводило)))
#34. tipsun Off (19)
Moderator
2011.08.19 23:11
Нормально/Говно?

Типа импортирует файлы
----
Ой не в ту тему написал.
Ну хотя это к загрузке картинок частично относится.
Код:
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>');?>
Отредактировано tipsun (2011.08.19 23:11)
#35. POFIGISST Off (6)
Участник
2011.08.19 23:11
tipsun эт код для чего?)))
#36. tipsun Off (19)
Moderator
2011.08.19 23:11
Ой не в ту тему написал.
Ну хотя это к загрузке картинок частично относится.
POFIGISST, извиняюсь.
----
Файлы импортирует.
Перез [enter] адреса файлов вводишь и все должно скопироваться.
- Надо только чуть настроить: папку, допустимый размер, допустимое разрешение для картинки.
Отредактировано tipsun (2011.08.19 23:11)
#37. POFIGISST Off (6)
Участник
2011.08.19 23:11
tipsun написал:
Ой не в ту тему написал.
Ну хотя это к загрузке картинок частично относится.
POFIGISST, извиняюсь.
----
Файлы импортирует.
Перез [enter] адреса файлов вводишь и все должно скопироваться.
та ничего,у мя тоже бывает с темами такое Гг )))
#38. Gemorroj Off (107)
Administrator
2011.08.19 23:11
tipsun, оформи в класс, добавь документацию в phpdoc стиле.
#39. tipsun Off (19)
Moderator
2011.08.19 23:11
Gemorroj, спс что посмотрел!
Бля с классами у меня беда, надо учить.
Добавлено спустя   4 минуты :
Думаю не будет лишнем.
Код:
span style="color: #0000BB"><?php if(!empty($import)) //foreach... ?>
#40. POFIGISST Off (6)
Участник
2011.08.20 00:12
tipsun Сделай проверку картинки по размеру,чтоб не могли залить шелл или другую гадость с измененным форматом))
#41. tipsun Off (19)
Moderator
2011.08.20 01:01
Разрешение и так проверяется, и вес проверяется. Для теста на локалке закомментил проверку на вес и http:// убрал.
- - - -
Насчет шелл, а разве может быть такое?
Ну можно сделать чтоб проверка была на картинку, точнее на её разрешение, чтоб было не меньше 1x1. Иначе типа не картинка.
- - - -
Я еще хотел сделать множественный upload, но скорее всего не буду делать, по 1 файлу тоже не плохо smile
Думал этим же получится сделать, но лучше отдельно, там поменьше кода надо, все и так определяется.
Отредактировано tipsun (2011.08.20 01:01)
#42. POFIGISST Off (6)
Участник
2011.08.20 03:03
ну шелл это файл пхп,но с разными форматами незнаю,если закинуть например шелл с форматом gif ,тот как его потом на хосте переименовать в пхп,но такая защита есть(по пикселям проверяют) значить наверное и с шеллом можно замутить такую фигню,не просто так же защиту придумали)))
#43. tipsun Off (19)
Moderator
2011.08.20 04:04
Ну надо будет поискать инфу тогда.
Добавлено спустя   8 минут  58 секунд:
include($file) - вот действительно шелл, который кодеры сами создают. А загрузить не получится все равно, надо чтоб у файла было расширение *.php которое врядли пройдет, т.к. функция которая выводит расширение операется на первую точку справа. Все что до нее (справа) будет проверяться как формат файла. Если то, что содержит "до" не содержит массив, то файл загружен не будет.
Отредактировано tipsun (2011.08.20 04:04)
#44. POFIGISST Off (6)
Участник
2011.08.20 04:04
это как то так выглядит))

Код:
$photo_giz = getimagesize($put);
if (!isset($photo_giz[0] ) && !isset($photo_giz[1])){
$err='Ошибка! Файл не допустим!';
echo'Ошибка! Файл не допустим!
';
unlink($put);
}
З.Ы. в аську зайди если можешь))
Отредактировано POFIGISST (2011.08.20 04:04)
#45. tipsun Off (19)
Moderator
2011.08.20 04:04
Тут ведь и тип проверяется.
Фиг знает, ща добавлю "если пусто"="ошибка".
Код:
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; }?>
Отредактировано tipsun (2011.08.20 04:04)
#46. Gemorroj Off (107)
Administrator
2011.08.20 08:08
POFIGISST, проверка размера - это не защита от шеллов.
#47. tipsun Off (19)
Moderator
2011.08.29 06:06
Можно:
- лог оставлять на потом.
- сделать, для удобства, указание строки разрешенных типов 'mp3,3gp,zip'
- сделать готовый вариант разрешенных типов или принимать указанные.
- сделать $load->run('file_list'); а так принимать $_POST[$var];
Код:
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); } }?>
Отредактировано tipsun (2011.08.29 06:06)
#48. POFIGISST Off (6)
Участник
2011.08.29 15:03
Gemorroj написал:
POFIGISST, проверка размера - это не защита от шеллов.
я думал что от шеллов,так как у них нету пикселей(( а от чего эта защита?))
#49. Gemorroj Off (107)
Administrator
2011.09.01 11:11
POFIGISST, как это нет? getimagesize возвращает на мне известных шеллах 16к пикселей.
Страниц: 13 4 5 Все
Главная
WEB
PunBB Mod v0.6.2
0.039 s