@klekovkinandrey

Как сменить изображение после перезагрузки страницы?

Как сделать смену изображения после перезагрузки страницы?
нужно что бы подставлялось 1е, потом 2е и 3е после каждой перезагрузки
<?
$array = array("img1.png", "img2.png", "img3.png");
?>

<img src="<? echo сюда; ?>"/>
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
Если вам нужна прямая последовательность (1, 2, 3...) то нужно хранить id текущей картинки в куках, и при следующем обновлении (выполнении php) читать эту куку и делать инкрементацию и снова перезаписывать куку с новым значением, после чего выводить новую картинку. и так до бесконечности. Так же нужна будет проверка на то что изображение есть. если у вас их 3, а текущий инкремент показывает 4 - то сбрасывать снова на 1.

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

Если вам нужно показывать всем пользователям одну и ту же последовательность, то данные о текущей картинки нужно хранить на стороне сервера (в файле, или бд). тогда все пользователи будут видеть одинаковую последовательность. но вам ее нужно будет привязать к какому то событию общему. например к последней цифре секунды текущего времени. у вас есть 10 картинок и есть 10 цифр секунды (0-9) тогда вывод можно сделать так:

<?php

// Последняя цифра секунды
$digit = (int) date('s') % 10;

// Изображение по умолчанию если текущего нет
$image = '1.png';

// Проверяем существует ли изображение
if(file_exists("{$digit}.png")) {
	$image = "{$digit}.png";
}

?>

<img src="<?= $image; ?>"/>


в таком случае при обновлении страницы будет каждый раз разное изображение (0.png ... 9.png)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dima9595
@dima9595
Junior PHP
Рандом?
А если вам нужно по порядку делать, то сначала показываем первый элемент, запоминаем его индекс, потом, при обновлении показывает index + 1 и т.д. А когда количество index станет равно количеству в массиве - "обнуляем" до 1-ого индекса и начинаем всё с начала.

Сложно?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы