Как мне запускать php-скрипт каждый раз, когда к нему обращаются на странице?

#php #rotator

#php #rotator

Вопрос:

Я использую этот ротатор изображений. Это здорово, но если я ссылаюсь на него несколько раз на одной странице, отображается одно и то же изображение. Я не знаю, сколько раз к нему будут обращаться, поэтому использование нескольких идентичных скриптов непрактично. Как мне изменить этот скрипт, чтобы я мог получить другое изображение в другом месте страницы, используя тот же URL? Возможно ли это?

РЕДАКТИРОВАТЬ: Оказывается, должна была быть какая-то проблема с кодированием. Здесь я нашел код получше, и он работает, если я использую разные запросы к каждой ссылке. Спасибо всем, кто прислал ответы!

Ответ №1:

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

Ваш браузер видит, что каждое «повернутое» изображение использует один и тот же URL, поэтому он кэширует результирующее изображение из первого запроса.

Вы можете изменить это поведение двумя способами.

  1. Добавьте в URL-адреса ваших «повернутых» изображений случайную строку из php. Например («rotate.php?img=my_static_image.jpg amp; x = 12345» Это означает, что браузер делает новый запрос для каждого изображения.

  2. Сделайте перенаправление вашего скрипта rotate на рандомизированный URL, если он не получает дополнительных параметров.

Комментарии:

1. Согласен, но, возможно, вы можете объяснить, почему это работает? (кэширование на клиенте? ) возможно, изменение способа работы скрипта поможет.

2. Это работает, потому что без этого браузер думает, что это одно и то же изображение, и загружает его только один раз.

3. Извините, я совсем новичок в php. Не могли бы вы, пожалуйста, дать простое описание того, как это сделать? : P бесполезен , спасибо!

4. <img src="http://example.com/image.php?1" /><img src="http://example.com/image.php?2" /><img src="http://example.com/image.php?3" />

5. Это может сработать… Я надеялся использовать один и тот же URL для всего, потому что это будет помещено в подпись форума.

Ответ №2:

Вы можете работать с получаемым параметром ‘img’.

/path/to/images/rotate.php?img=my_static_image.jpg

Подробнее о параметре GET по умолчанию вы можете найти в документации:http://www.alistapart.com/articles/randomizer /

Комментарии:

1. Это опция по умолчанию, как вы можете видеть в документации.

Ответ №3:

Если вы хотите сохранить URL неизменным, просто добавьте заголовок без кэша в свой php-скрипт следующим образом:

 <?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
  

Надеюсь, любой хотя бы наполовину приличный браузер учтет это и не будет кэшировать первый запрос.

Другой вариант — изменить ваш rotate.php скрипт так, чтобы код содержался внутри функции. Затем вы должны использовать include('rotate.php'); в верхней части своего скрипта и использовать свою новую rotate() функцию везде, где она вам нужна.