Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Новая картинка передана на сервер, но грузится ста


Автор: SergeyMitrofanov 9.9.2010, 12:19
С помощью формы закачиваю картинку на сервер, затем ее оттуда начинаю считывать, появляется картинка, назову ее Первой. Затем продолжаю закачивать с помощью этого же скрипта новую картинку, вывожу в броузер эту Вторую картинку, но в броузере остается Первая картинка. Картинки имеют одно и то же имя.
В чем дело?

Этот дефект наблюдается на IE 8.0, и удивительно, на FireFoх - все впорядке, картинки меняются. IE настроен правильно, обычные стандартные установки после его инсталла.

Код

<?php
  if (stristr ($_SERVER ['HTTP_USER_AGENT'], 'MSIE ') == TRUE)
    $flag = 'IE';
?>

  <h2>
    Загрузка файла на сервер
  </h2>

  <form
    action = '<?php echo $_SERVER ['PHP_SELF']; ?>'
    enctype = 'multipart/form-data'
    method = 'POST'
  >
    <input
      type = 'hidden'
      name = 'sent'
      value = 1
    >

    <p>
      Выбор файла
    </p>

    <input
      type = 'file'
      name = 'neue'
      size = 14
    >
    <br><br>

    <input
      type = 'submit'
      name = 'enter'
    >

    <input
      type = 'reset'
      value = 'Сброс'
    >
  </form>

  <!--
    Скрипт, обрабатывающий переданный на сервер файл
    Обработка загруженного файла
  -->

  <?php
    
    if (isset ($_POST ['sent']))
    {
      $feh = "";
      
      // если броузер клиента - IE
      if ($flag == 'IE')
      {
        if ($_FILES ['neue']['type'] != 'image/pjpeg')
          $feh .= "<br />или файл имеет неразрешенный тип";
      }
      // если броузер - Firefox
      else
        if ($_FILES ['neue']['type'] != 'image/jpeg')
          $feh .= "<br />или файл имеет неразрешенный тип";


      if (
           $feh == ""
           &&
           $_FILES ['neue']['size'] != 0
         )
      {
        copy ($_FILES ['neue']['tmp_name'], "a2copy.jpg");

        echo
        "
         <p
           align = 'center'
         >
           <br />
           <img
             border = '1'
             src = 'a2copy.jpg'
             alt = 'Загруженная картинка'
           >
         </p>
        ";
      }
      else
        echo
        "
          <h2>
            <font
              color = red
            >
            ".$feh."
            </font>
          </h2>
        ";
    }
  ?>

Автор: MoLeX 9.9.2010, 12:21
кэш

Автор: SergeyMitrofanov 9.9.2010, 12:26
Цитата(MoLeX @ 9.9.2010,  12:21)
кэш

IE настроен правильно, я в нем ничего не менял. Все настройки по умолчанию.

Автор: enoff 9.9.2010, 12:59
SergeyMitrofanov, потому и кэширует.
google -> php запрет кеширования.

Автор: bars80080 9.9.2010, 14:18
самый лучший вариант тут, задавать имя согласно версии картинки. допустим, где-то сохранено время загрузки картинки, в БД или filemtime или ещё какое, и просто подставляем его в путь:

<img src="pic.gif?tm=74289962" />

для одной и той же картинки он будет постоянен, для новой версии - другой

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)