PHP показать URL и перенаправить на следующий в цикле

0

У меня есть массив [1, 2, 55, 76,...]

где я создаю URL-адреса

www.example.com/id/1
www.example.com/id/2
www.example.com/id/55
...

Вопрос: Как показать каждый URL-адрес на несколько секунд (3s) и перенаправить на следующий URL-адрес?

Моя идея: использование iframe/jQuery

Я открыт для идей/кода/предложений.

  • 0
    это JavaScript вариант? Используйте таймер. Вы можете написать функцию и использовать .delay () для удержания скрипта перед перенаправлением в следующее место.
  • 0
    @TonyMancini sleep используется на стороне сервера, он не может показать код перед сном, а затем перенаправить
Показать ещё 6 комментариев
Теги:

2 ответа

1
Лучший ответ

Здесь JS-решение. Все URI записываются в массив по PHP, затем через них проходит интервал JS:

var urls = ['www.example.com/id/1','www.example.com/id/2','www.example.com/id/55'];

var current = 0;
var interval = window.setInterval(function(){
    document.getElementById('container').innerHTML = urls[current];
    current += 1;
        if(!urls[current]) {
        window.clearInterval(interval);
    }
}, 1000);

На стороне PHP первая строка будет выглядеть так ($uris - это массив со всеми URI):

echo "var urls = ['".implode("','", $uris)."']";

Вот пример JSFiddle.

  • 0
    возможно echo 'var urls = ', json_encode($urls); было бы предпочтительнее, как если бы использовалась переменная закрытия, ссылающаяся на iframe, и фактически устанавливала атрибут src в iframe для нового URL
1

довольно простая реализация JS была бы такой:

var interval = (function(iframe)
{
    var idx = 0,//current idx
        urls = <?= json_encode($urlArray); ?>;//array of urls
    iframe.src = urls[idx++];//set first url
    return setInterval(function()
    {//callback function, will be executed every 3 seconds
        iframe.src = urls[idx++];
        if (idx >= urls.length)
        {//we've just reached set last url
            idx = 0;//this resets the loop, after 3 seconds, the first url is used again
            //alternatively
            clearInterval(interval);//end of the loop
        }
    }, 3000);//3000 miliseconds, or every 3 seconds
}(document.getElementById('yourIframeID')));//pass reference to your iframe here

Эта строка:

<?= json_encode($urlArray) ?>

Является, конечно, инструкцией PHP и должен работать на стороне сервера, если вы не можете изменить JS с PHP, вы можете получить URL-адреса через вызов ajax

Пример скрипта

iframe.src URL-адреса, а затем просто заканчивает интервал, инструкции iframe.src закомментированы, так как скрипка использует div, но вы получаете основную идею

Ещё вопросы

Сообщество Overcoder
Наверх
Меню