За последние 24 часа нас посетили 18003 программиста и 1700 роботов. Сейчас ищет 1481 программист ...

Загрузка фото.

Тема в разделе "PHP для новичков", создана пользователем Борис, 21 ноя 2006.

  1. Anonymous

    Anonymous Guest

    DarkElf, пардон. Сам затупил =) Просмотрел, что ты их сабстром выковыриваешь сначала =) Мои извинения...
     
  2. draak

    draak Guest

    За темой с начала не следил, но что-то я вас не понимаю, не судите о файле по его разшерению, это не имеет никакого отнашению к самому файлу, это лишь его имя.
    1.
    Если вам нужен тип картинки то проверьте так
    PHP:
    1. <?php
    2.             $info = getimagesize($file);
    3.             if ($info[2]==1) $ext="gif";
    4.             if ($info[2]==2) $ext="jpg";
    5.             if ($info[2]==3) $ext="png";
    6.             if ($info[2]==4) $ext="swf";
    7.             if ($info[2]==5) $ext="psd";
    8.             if ($info[2]==6) $ext="bmp";
    9. ?>
    10.  
    Тогда хоть image.txt закачивайте. (расширение нужно для ассоциации программ к файлам)
    2.
    Как это PNG не понимает IE шутите что ли :D , если вы еще скажете что цвета png IE портит я ваще умру :D
     
  3. Mavir

    Mavir Guest

    Он не понимает прозрачности
     
  4. Mavir

    Mavir Guest

  5. Anonymous

    Anonymous Guest

    draak, кстати, а человечки на моей памяти раньше рандомайзились там у тебя?
     
  6. draak

    draak Guest

  7. draak

    draak Guest

    Горбунов Олег, не флуди причем тут рандомайзелись или не рандомайзелись, не об этом речь.
    PS. на внутр.стр. рандомайзятся
     
  8. Mavir

    Mavir Guest

    draak, Вы не поняли сообщения
    В сыром виде IE не правильно отображает прозрачности. Что же Вы показали рисунок обработаный стилями?

    Я в IE могу слушать музыку, например, через flash или проигрыватель ;)
     
  9. draak

    draak Guest

    IE это браузер для рендера html кода! html код это язык гиперразметки включающий в себя html-теги (разметка) и CSS (style тоже html тег). Так вот IE в любом случае показывает картинку обработанную стилями. по умолчанию они берутся дефолтные.
    А в сыром виде все браузеры все показывают не очень то и правильно ;)
     
  10. draak

    draak Guest

    Я так и не смог понять о чем щас идет речь. О трех столбиках, о загрузки файла или о проверки его типа. Сформулируйте текущий вопрос по новой.
     
  11. xak2

    xak2 Guest

    Marvi прав это то о чем я говорил. ПНГ не для ИЕ. Я сам дезайнер и часто сталкиваюсь с такой проблемой.
     
  12. Anonymous

    Anonymous Guest

    xak2, нонсенс.
    Что есть - для IE - не для IE?
    Это руки бывают прямые или нет.
     
  13. Mavir

    Mavir Guest

    Горбунов Олег, рисунок вставляется через <img src="imgname">. И если не использовать стили (можно сказать - костыли), то png будет не правильно отображаться.

    Здесь спор ни о чем. Вы говорите, что можно в IE использовать png. Я с эти не спорю и полностью согласен. Но правильно показывать, без какой-либо обработки стилями, IE не может.
     
  14. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    PHP:
    1. <?php
    2. if(!$_FILES['upload_table']['tmp_name']){print("Файла не передано."); exit();};
    3. if($_FILES['upload_table']['size'] > '6000'){print("Размер файла превышает допустимый: ".$_FILES['upload_table']['size']); exit();};
    4. if(!ereg("^image",$_FILES['upload_table']['type'])){print("Передан недопустимый тип файла"); exit();};
    5. $fname = time().'_'.md5($_FILES['upload_table']['name']);
    6. $type_str = substr($_FILES['upload_table']['type'],6,10);
    7. $info = @getimagesize($_FILES['upload_table']['tmp_name']);
    8. if(!$info){
    9.     if(ereg("(gif)",$type_str)){$type = 'gif';}
    10.     elseif(ereg("(jpeg)",$type_str)){$type = 'jpg';}
    11.     elseif(ereg("(jpg)",$type_str)){$type = 'jpg';}
    12.     elseif(ereg("(png)",$type_str)){$type = 'png';}
    13.     else{print("Тип файла не опознан."); exit();};
    14. }
    15. else{
    16.     switch($info[2])
    17.         case "1": $type="gif"; break;
    18.         case "2": $type="jpg"; break;
    19.         case "3": $type="png"; break;
    20.         case "4": $type="swf"; break;
    21.         case "5": $type="psd"; break;
    22.         case "6": $type="bmp"; break;
    23.         default: "тип файла неизвестен"; exit(); break;
    24. };
    25. $fname .= '.'.$type;
    26. copy($_FILES['upload_table']['tmp_name'],$fname);
    27. ?>
    таак, оба варианта проверки объединил (второй, на основе переданного из формы, работает, если на сервере нет библиотеки GD и следовательно недоступна функция getimagesize().

    что еще можно улучшить в плане безопасности/надежности?
     
  15. Anonymous

    Anonymous Guest

    Mavir, ты еще скажи что IE цвета в png портит... ;)
     
  16. Борис

    Борис Активный пользователь

    С нами с:
    1 июн 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Питер
    Пришла в мою голову ещё одна идея вчера по поводу того, что надо бы сделать комментарии к присоединяемым фотам. Сделал форму в которую люди могут их писать и которые потом пишутся в файл.

    Была идея сделать так: Человек высылает фото. У него есть какое-то имя, и комментарии пишутся в текстовый файл с таким же названием. А потом публикуются в таблице слева столбик с фото, а справа столбик с комментариями к ним.

    Можно ли такое сделать при работе с файлами? Если да, то плз помогите реализовать... Сидел со вчерашнего вечера так ничего толком и не выводится.
     
  17. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Борис

    генерируй с тем же именем, что и графика, текстовый файл, с определенной структурой, и залисывай туда усе, что душе угодно..
     
  18. Борис

    Борис Активный пользователь

    С нами с:
    1 июн 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Питер
    А как его с таким же именем генерировать?
     
  19. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Борис

    переменная $fname - содержит имя файла с расширением.. можно либо к этому имени добавить новое разрешениее, напрм, 4546bb.jpg.txt
    либо заменить 3 последних символа на txt

    создать файл можно, просто открывая его на запись. если файл не существует и имеются достаточные права, то файл создастся сам.
     
  20. Борис

    Борис Активный пользователь

    С нами с:
    1 июн 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Питер
    Подскажи пожалуйста как добавить .txt к концу, а потом как его открывать на запись, когда это как бы переменная, ведь его имя мы получаем только когда люди "Нажимают кнопочку"
     
  21. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Борис

    ну, у тебя же есть форма загрузки файла, туда же добавляешь поля типа описания и т.п.

    в итоге у тебя все это передается сразу.
    как итог, переменная $fname существует.
    делаешь, например, вот так:
    $fname2 = $fname.'.txt';
    $f = fopen('./'.$fname2,"w");
    //получение и проверка переданных данных
    $str //строка описания файлов с определенным разделителем
    fwrite($f,$str);
    fclose($f);
     
  22. Борис

    Борис Активный пользователь

    С нами с:
    1 июн 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Питер
    Вот код:
    Код (Text):
    1.  
    2.  
    3. <FORM ENCTYPE="multipart/form-data" ACTION="" METHOD="POST">
    4. Выберите фото для отправки: <INPUT NAME="addimg" TYPE="file"> <br>
    5. Ваш комментарий:<br>
    6. <TEXTAREA NAME="txt" ROWS=3 COLS=37>
    7. </TEXTAREA>  
    8.  
    9. <P>
    10. <INPUT TYPE="submit" VALUE="Закинуть фотку">
    11. </FORM>
    12. <a href="http://www.okrugin.spb.ru/index.htm"><u>На главную</u></a>
    13. <br><br>
    14. </table>
    15.  
    16.  
    17. <u><b>Загруженные фотo:</b></u><br><br>
    18. <br><br>
    19.  
    20.  
    21. <?php
    22.  
    23. $up_dir = 'uploads/';
    24. $handle = opendir($up_dir);
    25.  
    26.  
    27.  
    28. if(!empty($_FILES['addimg']['name'])) {
    29. move_uploaded_file($_FILES['addimg']['tmp_name'],"uploads/".$_FILES['addimg']['name']);
    30. }
    31.  
    32.  
    33.  
    34.  
    35.  
    36.  
    37.  
    38.  
    39.  if ($handle = opendir($up_dir))
    40.  {
    41.   while (false !== ($file = readdir($handle)))
    42.   {
    43.    if ($file != "." && $file != ".." && $file != "Thumbs.db")
    44.    {
    45.     $info = pathinfo($file);
    46.     if ($info['extension'] == "jpg" || $info['extension'] == "gif" || $info['extension'] == "bmp")
    47.      {
    48.       echo "<a href=$up_dir/$file>$file</a><br>";
    49.       echo "<a href=$up_dir/$file><img src=$up_dir/$file height=300border=\"0\"></a><br><br>";
    50.  
    51.  
    52. $file2 = $file.'.txt';
    53. $f = fopen('./'.$file2,"w");
    54. $txt = (isset($_POST['txt'])) ? $_POST['txt'] : '';
    55. if ( !empty($txt) ){
    56. fwrite($f,$txt);
    57. fclose($f);
    58. }
    59.  
    60.  
    61. else{
    62. echo "Комментариев нет...";
    63. }
    64.  
    65. echo "
    66.  
    67. $handle = fopen($file2, 'a');  
    68. $contents = fread($handle, filesize($filename));  
    69.  
    70. $contents = str_replace($contents);  
    71.  
    72. print $contents;  
    73. fclose($handle);  
    74.  
    75.  
    76. ";
    77.  
    78.  
    79.  
    80.      }
    81.     else
    82.      {
    83.      echo "$file<br><br>";
    84.      }
    85.    }
    86.   }                                                        
    87.  
    88. closedir($handle);
    89. }
    90.  
    91.  
    92.  
    93.  
    94.  
    95. ?>

    Пишет ошибки: Помагите с ними пожалуйста...

    Notice: Undefined variable: contents in D:\wwwroot\okrugin\posting\foto.php on line 99

    Notice: Undefined variable: filename in D:\wwwroot\okrugin\posting\foto.php on line 101

    Notice: Undefined variable: contents in D:\wwwroot\okrugin\posting\foto.php on line 101

    Notice: Undefined variable: contents in D:\wwwroot\okrugin\posting\foto.php on line 103

    Notice: Undefined variable: contents in D:\wwwroot\okrugin\posting\foto.php on line 104
    Resource id #5 = fopen(balance1[1].jpg.txt, 'a'); = fread(Resource id #5, filesize()); = str_replace(); print ; fclose(Resource id #5);
     
  23. avm

    avm Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. echo "
    2.  
    3. \$handle = fopen(\$file2, 'a');
    4. \$contents = fread(\$handle, filesize(\$filename));
    5.  
    6. \$contents = str_replace(\$contents);
    7.  
    8. print \$contents;
    9. fclose(\$handle);
    10.  
    11.  
    12. ";
    p.s. дико бессмысленный кусок кода.
     
  24. Борис

    Борис Активный пользователь

    С нами с:
    1 июн 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Питер
    Спасибо всем, всё получилось!

    2 avm так не работает