Меняющийся фон на PHP

Март
2
2012


А вы хотели бы, чтобы на Вашем сайте фон периодически изменялся? Я вот недавно столкнулся с необходимостью реализовать такое счастье, и теперь хочу поделиться с Вами способом реализации данной задачи на PHP.
Функция довольно проста и имеет всего два агрумента, первый — это тип файлов, второй — месторасположения папки с изображениями. Вот собственно код функции:

function change_bg($imageType, $pathImg)
{
    $imageType = '.' . $imageType; 
    $imgs = array();
    $dir = opendir($pathImg);
    while ($imgName = readdir($dir)) {
        if ($imgName != '.' && $imgName != '..') {
            if (strtolower(strrchr($imgName, '.')) == $imageType) {
                $imgs[] = $pathImg . $imgName;
            }
        }
    }
    closedir($dir);
    $num = count($imgs);
    $day = date('s'); // s - секунды; i - минуты; H -  часы; d - дни; m - месяцы; Y - годы;  
    if ($day{0} == '0') $day = $day{1};
    while ($day >= $num) {
        $day -= $num;
    }
    $style = "style = \"background:url({$imgs[$day]});\"";
    return $style;
}

Функция возвращает CSS-свойство background. Для наглядности, фоновое изображение меняется каждую секунду, и строка $day = date('s'); отвечает за это, для того, чтобы менять изображение один раз в минуту, измените эту строку следующим образом $day = date('i');
Как применить это к Вашему сайту? Да очень просто! Стиль можно применять к любому тегу. Например к тегу body:
<body <?php echo change_bg('jpg', 'image/');?>>
Ну и небольшой демо-пример для наглядности.

К этой записи 26 комментариев

  • Diam пишет:

    Только думал:

    Эх щас выскажу ему, что примера нет, не наглядно…

    А он оказывается и пример представил, от молодца! :)

    Так это, а с какой периодичностью меняется то? И в левом верхнем углу почему-то набор символов вместо слов отображается у меня.

    • Stafox пишет:

      В примере каждую секунду. Кодировку подправил. Спасибо, Диам.

  • wertock пишет:

    Меняющийся фон на PHP

    В примере.

    • Stafox пишет:

      Перепроверил, у меня всё ок. Кодировка utf-8.
      Но для надёжности поставил 1251ю. Теперь должно быть хорошо.

  • Diam пишет:

    Стасяндрик хз, у меня фон не меняется..

    • Stafox пишет:

      Понял о чем ты. Фон меняется по обновлению страницы.
      Для изменения фона без обновления нужен JavaScript.

      • Diam пишет:

        По обновлению странички меняется, действительно :)

  • Gemorroj пишет:

    а почему так хромает форматирование кода?

    • Stafox пишет:

      Ну вот уж так сложилось, что это и есть моя манера написания скриптов на-быструю-руку. Хотелось бы узнать, что Вам конкретно не понравилось (учту на будущее).

    • Ярослав пишет:

      Есть 2 основных стандарта форматирования кода — Zend и PEAR.
      + специфичные для проектов (Drupal, Joomla, Kohana и др).

      ИМХО, плохому танцору… Мне на**ать какие там стили придумали и кто, я отлично справляюсь с собственные стилем форматирования кода, так как я не использую говно-движки, как джумла и др. Они убогие и тупящие. Реальный пример был у меня пару недель назад, когда удалил Joomla-сайт с 500 уников в день (всего-то), а он работал, как будто там было их сотня тысяч. Рядом работал мой двиг с производительностью в 10000 раз быстрее и посещением в 10 раз большим.

      Я не говорю, что все движки — треш, но 99% их точно херня, на которую не то что деньги, внимание выделить жалко.

      Stafox, твой пример чет не пашет. в чем беда?

      • Stafox пишет:

        Да вроде работает. Только обновление бэкграунда происходит не автоматически (как на js), а с обновлением страницы (F5).

  • Gemorroj пишет:

    Есть 2 основных стандарта форматирования кода — Zend и PEAR.
    + специфичные для проектов (Drupal, Joomla, Kohana и др).
    Просто это влияет на скорость понимания кода сторонними разработчиками. А время — деньги, как известно.
    К тому же, грамотное оформление будет плюсом при приеме на работу.

    • Stafox пишет:

      Привел код в порядок. Спасибо. Обычно придерживаюсь стандарта Zend.

  • LPFun пишет:

    как данный код подключить к сайту? куда что надо копировать? подскажите пжалуйста)

    • Stafox пишет:

      В самом начале страницы вставляете код функции
      [php]<?php
      function change_bg($IMAGE_TYPE, $PATH_IMG)
      {
      ...
      }
      ?>[/php]
      ну, а потом находите свой тег body, и заменяете его на эту строку
      [php]<body <?php echo change_bg('jpg', 'image/');?>>[/php]
      Как вариант.

      • allemiko пишет:

        Разбираюсь с кодом, у меня вордпресс)) верхний код в heder вставлять?

        • Stafox пишет:

          Можно в functions.php

  • Ольга пишет:

    Хотела посмотреть ваш демо-пример а он что то не работает.Я попробовала и страницу вашу обновить и всё тоже самое.

    • Stafox пишет:

      Странно. У меня все работает. Открываете пример и нажимаете обновить страницу. После каждого обновления будет отображен новый фон.

  • Suvitruf пишет:

    При каждом обращении к сайту диры и файлы чекать? Лишняя нагрузка.

    Лучше массив ссылками на файлы хранить, чтоб сервак не грузить. В идеале вообще лучше на JS это переложить (подстановку src при onload).

    • Stafox пишет:

      Да, лишняя нагрузка. Но в этом случае, в любое время можно закинуть парочку своих (а может 1000?) изображений и посмотреть его в действии. Быстро, без задания путей и т.д. Ведь можно вообще переименовать все изображения от 1.jpg, 2.jpg …. 832.jpg, а потом циклом бегать :) (но я не любитель такого)

      Про JS оно понятно, такие вещи на нем и должны реализовываться, но здесь непосредственно, стояла задача: сделать средствами PHP.

      • Suvitruf пишет:

        Ну понятно.
        Я ради интереса тоже много чего делаю не оптимального )

  • allemiko пишет:

    А как сделать, чтобы картинка менялась при обновлении страницы, или каждый день разная :) указывать число и дни, например 1d :)

    • Stafox пишет:

      Изменить 15-ую строку скрипта.

      Изменение каждую секунду:
      [php]$day = date('s');[/php]
      Каждый день
      [php]$day = date('d');[/php]

  • Екатерина пишет:

    Подскажите, пожалуйста, что необходимо заменить в коде?
    Куда прописывать путь, название картинок, тип?

    Заранее спасибо.

    • Stafox пишет:

      Названия картинок не нужны. Следует указать лишь путь, и тип.

      Функция довольно проста и имеет всего два аргумента, первый — это тип файлов, второй — месторасположения папки с изображениями

      Путь должен быть указан относительно корня.

Добавить комментарий для Stafox