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

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

  • ilma55

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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