За последние 24 часа нас посетили 20280 программистов и 1724 робота. Сейчас ищут 2179 программистов ...

Переход на страницу методом header() работает плохо

Тема в разделе "Прочие вопросы по PHP", создана пользователем pr0n1x, 5 май 2006.

  1. pr0n1x

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

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Вот столкнудся с такой вот проблемой.

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

    Код (Text):
    1.  
    2. header("Location: editpic.php?id=68");
    На страницу то оно переходит, но не на обновленную с новой картинкой, а со старой, хотя картинка уже в базе данных изменилась, я это проверял. А вот когда только нажмешь F5 тогда страница перегружается с новой картинкой.

    Помогуте в чем тут проблема????????
     
  2. mistake

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

    С нами с:
    23 фев 2006
    Сообщения:
    23
    Симпатии:
    0
    вроде бы тебе нада делать хидеры, чтобы не кэшировалась страница браузером.
     
  3. pr0n1x

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

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Как их делать???????
     
  4. mistake

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

    С нами с:
    23 фев 2006
    Сообщения:
    23
    Симпатии:
    0
    Где-то примерно так они выглядят.

    header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
    header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
    header( 'Cache-Control: no-store, no-cache, must-revalidate' );
    header( 'Cache-Control: post-check=0, pre-check=0', false );
    header( 'Pragma: no-cache' );
     
  5. pr0n1x

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

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Тоже не работает.
    Может я не туда их вставляю, в какую станичку их нужно вставлять.
    Я их пишу сразу перед строкой перехода вот так

    Код (Text):
    1.  
    2.     header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
    3.     header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
    4.     header( 'Cache-Control: no-store, no-cache, must-revalidate' );
    5.     header( 'Cache-Control: post-check=0, pre-check=0', false );
    6.     header( 'Pragma: no-cache' );
    7.     header("Location: eeditpic.php?id=".get_param("id"));
     
  6. Kelkos

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

    С нами с:
    15 апр 2006
    Сообщения:
    37
    Симпатии:
    0
    хидеры супротив кэша не всегда работают.. есть "суперуниверсальный" метод в хтмл картинки вызывать как <img src="/mypic.jpg?<?=time() ?>"> . гарантированно не будет кэшироваться. Правда учтите. что кэширование в большинстве случаев пользу приносит пользователям.
     
  7. pr0n1x

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

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Интересно не знал.

    Но у меня картинка подгружаются из базы данных, параметр href элемента img у меня выглядит таким:

    Код (Text):
    1.  
    2. <img src="showMemberImage.php?viewMemberId=68" border="0" style="LEFT: 200px; TOP:200px;" width="20px" height="20px" alt="" />
    Как в этом случае правильно использовать time()?????
     
  8. olo

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

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    смысл тут в том что у картинки каждый раз будет псевдоуникальный урл, поэтому браузер таки обратится за ней на сервер. так что добавь еще одну переменную в адрес картинки и будет тебе щасье :)
     
  9. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    pr0n1x, лучше не каждый раз уникальный урл делать, а менять его после изменения картинки, для того чтобы все-таки картинки кэшировались.
    Например, ввести в базу для картинок еще одно числовое поле и, после изменения картинки увеличивать его на 1. А в урл подставлять его, например:
    showMemberImage.php?viewMemberId=68&x=1 - сначала
    showMemberImage.php?viewMemberId=68&x=2 - после изменения
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    pr0n1x

    известная и СТАРАЯ глюка. делай так:
    PHP:
    1. <?
    2. print('<img src="/images.sample.jpg?rnd='.time().'">');
    3. ?>
    Хедеры тут СОВСЕМ НЕ ПРИЧЕМ.