Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Хостинг картинок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vlados
Отправлено: 12 Июля, 2011 - 11:22:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Хостинг картинок на PHP.
Цитата:
Вот у меня есть 2 файла.

CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <title>Загрузить изображение</title>
  5.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.     </head>
  7.     <body>
  8.         <div>
  9.             <form enctype="multipart/form-data" action="index.php" method="post">
  10.                 <input type="hidden" name="MAX_FILE_SIZE" value="30000000" />
  11.                 <input name="userfile" type="file" />
  12.                 <input type="submit" value="Отправить" />
  13.             </form>
  14.         </div>
  15.     </body>
  16. </html>


PHP:
скопировать код в буфер обмена
  1.  <?PHP
  2. include "template/lite/index.html";
  3.  
  4. $str = basename($_FILES['userfile']['name']);
  5. $str = md5($str);
  6. $uploadfile = "/home/imgh.com/www/$str";
  7.  
  8. move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
  9. ?>

Цитата:
Если протестировать скрипт, то можно увидеть, что он сохраняет файлы с именем в md5, но без расширения. Мне надо сделать так, чтобы, скрипт узнавал РЕАЛЬНОЕ расширение файла, а не подделку. Если расширение файла соответствует разрешенному, то скрипт загружает файл на сервер с именем md5, но еще и добавлял в конец файла РЕАЛЬНОЕ расширение файла.
Еще я бы хотел вас помочь мне с безопасностью. Может можно где нибудь про это почитать?
 
 Top
grefon
Отправлено: 12 Июля, 2011 - 11:37:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Тема обсуждалась много раз. Поищите по форуму по запросам mime type, а так же среди функций, потому что Вашу задачу можно решить и другими способами. Например через imagetypes.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
alxfro
Отправлено: 12 Июля, 2011 - 16:29:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




примерно так смотреть тип файла
PHP:
скопировать код в буфер обмена
  1. $mime=$_FILES['file']['type']; //тип файла


а так - его базовое имя


т.е. копать в массив $_FILES

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

PHP:
скопировать код в буфер обмена
  1. function translitIt($str)
  2. {
  3.     $tr = array(
  4.         "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
  5.         "Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
  6.         "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
  7.         "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
  8.         "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
  9.         "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
  10.         "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
  11.         "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
  12.         "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
  13.         "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
  14.         "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
  15.         "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
  16.         "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
  17.     );
  18.     return strtr($str,$tr);
  19. }
  20.  

еще есть такой способ, не я автор так что сами судите его как хотите:


проверка сигнатуры
PHP:
скопировать код в буфер обмена
  1.  <?PHP
  2.  function get_image_type($file) {
  3.      if (!$f = fopen($file, 'rb')) {
  4.          return false;
  5.      }
  6.  
  7.      $data = fread($f, 8);
  8.      fclose($f);
  9.  
  10.      if (
  11.          @array_pop(unpack('H12', $data)) == '474946383961' ||
  12.          @array_pop(unpack('H12', $data)) == '474946383761'
  13.      ) {
  14.          return 'GIF';
  15.      } else if (
  16.          @array_pop(unpack('H4', $data)) == 'ffd8'
  17.      ) {
  18.          return 'JPEG';
  19.      } else if (
  20.          @array_pop(unpack('H16', $data)) == '89504e470d0a1a0a'
  21.      ) {
  22.          return 'PNG';
  23.      } else if (
  24.          @array_pop(unpack('H4', $data)) == '424d'
  25.      ) {
  26.          return 'BMP';
  27.      }
  28.  
  29.      return false;
  30.  }
  31.  ?>

(Отредактировано автором: 12 Июля, 2011 - 16:35:04)

 
 Top
vlados
Отправлено: 12 Июля, 2011 - 18:52:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


alxfro спасибо, но я уже сделал. Посмотрел в справку про СГМ $files
 
 Top
illy
Отправлено: 24 Июля, 2011 - 18:59:29
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




photo.php

CODE (htmlphp):
скопировать код в буфер обмена
  1. <style>
  2. .ai:link,.ai:active ,.ai:visited ,.ai:hover {padding:3;background-color:#2993C1;color:#ffffff;border:0px solid #D0DBE1;cursor:hand;font-weight:none;font-family:arial;font-size:13px;text-decoration:none}
  3. .image_list {color:#000000;font-weight:none;font-family:arial;font-size:13px;text-decoration:none}
  4. </style>
  5.  
  6. <font id=image_list class=image_list></font>
  7. <br>
  8. <form id=sp target=p_a action=p_a.php method=POST enctype="multipart/form-data">
  9. <font class=photo>Фото:</font>
  10. <input id=gfile class=p_i type=File name=ufile size=20>
  11. <input type=hidden name=act value=upf>
  12. &nbsp;&nbsp;<a class=ai href="javascript:with(document.getElementById('sp')){submit()}"> Загрузить </a>
  13. </form>
  14. <iframe name=p_a frameborder=0 src=p_a.php width=0 height=0 scrolling=no></iframe>
  15.  


p_a.php

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. $w=500; // Ширина уменьшеного фото
  4. $nh=375; // Высота уменьшеного фото
  5. $size=500; // Максимальный вес фото в киллобайтах, если её размеры меньше 500*375. Например, если грузят анимацию gif размером 50*35, но весит она 1мб
  6. $dir='Photo/'; // Папка для сохранения фото (не менять)
  7. $tt='Ваше фото по размерам меньше '.$w.'*'.$nh.', но весит больше '.$size.' кб';
  8.  
  9. $sd=strtolower($_FILES['ufile']['name']);
  10.  
  11. if ($_POST['act']=="upf" && $_FILES['ufile']['name']<>'' && (preg_match("/\.jpg$/",$sd) or preg_match("/\.png$/",$sd) or preg_match("/\.gif$/",$sd))) {
  12.  
  13. $s=GetImageSize($_FILES['ufile']['tmp_name']) or exit;
  14. $na=substr(time(),3,9).substr(sprintf('%.3f',microtime()),2,4);
  15. $t=preg_replace('/(.*)(.{4})$/','\2',$sd);
  16.  
  17. $sf=$_FILES['ufile']['size']/1024;
  18.  
  19. if($s[0]<=$w && $s[1]<=$nh && $sf<$size){
  20. copy($_FILES['ufile']['tmp_name'], $dir.$na.$t);
  21. echo "<script>parent.document.getElementById('image_list').innerHTML+=' $na$t';</script>";
  22. }
  23. if($s[0]<=$w && $s[1]<=$nh && $sf>$size){
  24. echo "<script>alert('".$tt."');</script>";
  25. }
  26.  
  27. $sn=$_FILES['ufile']['tmp_name'];
  28.  
  29. if(preg_match("/\.png$/",$sd)){
  30. }
  31. if(preg_match("/\.jpg$/",$sd)){
  32. }
  33. if(preg_match("/\.gif$/",$sd)){
  34. }
  35. $k=$s[0]/$w;
  36. $h=ceil($s[1]/$k);
  37. if($h>$nh){
  38. $kh=$h/$nh;
  39. $h=$nh;
  40. $w=ceil($w/$kh);
  41. }
  42. imageSaveAlpha($d,true);
  43. imagecopyresampled($d,$p,0,0,0,0,$w,$h,$s[0],$s[1]);
  44. imagejpeg($d,$dir.$na.'.jpg');
  45. echo "<script>parent.document.getElementById('image_list').innerHTML+=' $na.jpg';</script>";
  46. }
  47. else {exit;}
  48. ?>
  49.  


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB