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

StackOverflow https://stackoverflow.com/questions/5841447

  •  27-10-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

  1. Суффикс ваши URL -адреса изображения «вращаются» со случайной строкой от PHP. Например ("rotate.php? img = my_static_image.jpg & x = 12345" Это означает, что браузер делает свежий запрос на каждое изображение.

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

Другие советы

Вы можете работать с параметром Get 'IMG'.

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

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

Если вы хотите сохранить 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() функционируйте, где бы вам это нужно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top