ФорумПрограммированиеPHP для идиотов → проблема в сессии для вывода банеров

проблема в сессии для вывода банеров

  • ilma55

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 26 октября 2010 г. 6:01

    Добрый день! задача: вывод банеров в последовательно и без повторений

    реализация на joomla!!!
    я решил сделать так:
    1, подсчитываю количество файлов в папке
    2, получаю случайно число (это для того чтоб выводить случайный банер из папки)
    3, вывожу первый банер и заношу это значение в сесию
    4, при обновлении страницы или при переходе на новую страницу я сравниваю полученную переменную случайным образом и переменную из сесии
    4,1 если они равны то выводить другой банер
    4,2 если не равны, то выводить банер

    PS может это не правильный подход, то подскажите пожалуйста правильный. я так понял тут не делают, а обсужждают!

    <?php defined( &#39;_JEXEC&#39; ) or die( &#39;Go Away&#39; ); ?>
    <?php
    $doroga = $params->get( &#39;doroga&#39;);

    $sPath = &#39;./images/banners/&#39;.$doroga.&#39;/&#39;; // указываем путь к папке
    $dDir = opendir($sPath);
    $aFileList=array();
    while ($sFileName=readdir($dDir))
    {
    if ($sFileName!=&#39;.&#39; &amp;&amp; $sFileName!=&#39;..&#39;)
    {
    $aFileList[]=$sFileName;
    }
    }
    closedir ($dDir);
    $iNumFiles=count($aFileList); // колич-во файлов в папке

    //foreach($aFileList as $value) { echo &quot;$value <br />&quot;; } // вывод списка имен файлов

    $i = rand(1,$iNumFiles); // получаю случайное цисло при начале работы скрипта
    $j = $i-1;
    echo &quot;eto JJJ: &quot;.$j;
    echo &quot;<br />&quot;;
    echo $aFileList[$j];
    echo &quot;<br />&quot;;

    $session =JFactory::getSession(); // стартую сесиию
    $temp = $session->get(&#39;temp_baner&#39;);
    if (empty($temp))
    {
    $temp = $j;
    $session->set( &#39;temp_baner&#39;, $temp );
    }
    else
    {
    $temp = $session->get(&#39;temp_baner&#39;);
    echo &#39;eto iz sessii - &#39;.$temp;
    if (($temp == 0) or ($temp == -1)) $temp = 1;
    if ($temp == 1) $temp = 0;
    $session->set( &#39;temp_baner&#39;, $temp );
    $j = $temp;
    }

    ?>
    <div class=&quot;niz banneritem&quot;>
    <?php // вывод кода для отображения банера
    $content = <<<EOD
    <object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&quot; border=&quot;0&quot; width=&quot;200&quot; height=&quot;100&quot;>
    <param name=&quot;movie&quot; value=&quot;$sPath/$aFileList[$j]&quot;/>
    <param name=&quot;wmode&quot; value=&quot;opaque&quot;/>
    <embed src=&quot;$sPath/$aFileList[$j]&quot; allowScriptAccess=&quot;sameDomain&quot; loop=&quot;true&quot; pluginspage=&quot;http://www.macromedia.com/go/get/flashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;200&quot; height=&quot;100&quot;></embed>
    </object>
    EOD;
    ?>
    <div class=&quot;clr&quot;></div>
    </div>



    не понимаю, но не совсем работает… почему то сессия глючит…
    я так понимаю, если я загнал переменную в сесию, то она там находится до конца. я ни где не удаляю эту переменную $temp
    а на самом деле так происходит что она удаляется
  • ilma55

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 4 ноября 2010 г. 7:10, спустя 9 дней 1 час 8 минут

    это я глючил =)

    вот ошибка то
    if (($temp == 0) or ($temp == -1)) $temp = 1;
    if ($temp == 1) $temp = 0;

    но уже все исправил

    можно закрывать тему!!!
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 4 ноября 2010 г. 7:13, спустя 2 минуты 33 секунды

    if (($temp == 0) or ($temp == -1)) $temp = 1;
    if ($temp == 1) $temp = 0;

    пистец код) {+++35+++} $temp = $temp == 1 ? 0 : 1;
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 4 ноября 2010 г. 7:16, спустя 3 минуты 7 секунд

    наверно можно
    $temp = (int)!$temp;
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 4 ноября 2010 г. 7:42, спустя 26 минут 28 секунд

    Абырвалг, там -1 был )
    Сапожник без сапог
  • ilma55

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 4 ноября 2010 г. 7:45, спустя 3 минуты 3 секунды

    хм… прикольно, как тока тема не нужна так посты появились…
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 4 ноября 2010 г. 7:47, спустя 1 минуту 55 секунд


    хм… прикольно, как тока тема не нужна так посты появились…
    тут все боятся большого количества кода :)
    Сапожник без сапог
  • ilma55

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 4 ноября 2010 г. 7:59, спустя 11 минут 46 секунд

    ааааа… понятно

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