Баннеры не хотят меняться

shiko

Guest
Баннеры не хотят меняться

Здравствуйте.
Не могу разобраться в чем проблема.
Написал простейший скрипт показа баннеров одного размера.
Он должен вставлять по очереди (не случайно) имеющиеся баннеры по одному на каждую¬новую
страницу. Для этого в banners.txt храню строчки типа
price.jpe|http://www.price.ru|Прайс универсал
а в number.txt порядковый номер баннера, который должен включиться при загрузке следующей или обновлении текущей страницы.
Этот скрипт я инклудом вставляю во все страницы.
Так вот, дома-то все работает как задумал, а в сети...
Появившийся при загрузке первой страницы баннер сопрвождает посетителя по всему сайту и меняться не хочет.
PHP:
<?
$array_bann=file('banners.txt');
$fail="number.txt";
$number=file($fail);
$number = trim(str_replace ("\n","", $number[0]));
$random=$array_bann[$number];
$fb = @fopen($fail,"w");
flock($fb, LOCK_EX);
$number= $number+1;
if ($number>4) {$number=0;}
fwrite($fb, $number);
flock($fb, LOCK_UN);
fclose($fb);
list($name, $url, $alt)=explode("|", $random);
echo "<a href=\"".$url."\"><img src=\"http://www.мой_сайт.ru/banner/banners/".$name."\" alt=\"".$alt."\" border=0></a>";
?>
З.Ы. баннеров по умолчанию 5 штук (чтоб Вас не смущала цифра 4 в if). Это решение, конечно, в лоб, но даже так не хочет работать. Спасибо.
 

Фанат

oncle terrible
Команда форума
[f]debug[/f]
тебя интересует вторая часть

-~{}~ 23.02.04 12:42:

хотя нет.
и первую надо тоже прочесть
 

Фанат

oncle terrible
Команда форума
дело в том, что это не фак. Не ответ на вопрос.
Это объяснение того, что такое программирование на самом деле.
просто это настолько очевидно для профессоналов и настолько не приходит в голову людям, которые с программированием столкнулись случайно, что объяснить такие вещи редко кому приходит в голову.

основная работа при написании программы - это именно поиск ошибок.
И отладка (проверка, буквально построчная, того, что делает программа) - основной способ их найти.

-~{}~ 23.02.04 13:35:

сейчас, конечно, придут любители потрендеть, и скажут, что придумать хороший алгоритм будет посложнее. Но что взять с людей, которые отвечают, не видя контекста вопроса.
 

IntenT

SkyDiver
shiko
Фак конечно почитай, но я почти на 100% уверен что проблема у тебя в файле number.txt. А точнее - в отсутствии прав на запись в этот файл скриптом.

КОд твой запустил, все работает как и ожидается (при условии прав на файл 0666)
 

Фанат

oncle terrible
Команда форума
IntenT
а чтобы быть уверенным не почти, надо сделать так, как написано в факе.
 

shiko

Guest
а чтобы быть уверенным не почти, надо сделать так, как написано в факе.
Не-е-е, ребята.
Тут дело не в том, что вы говорите.
Фанат, если ты меня слышишь...
Поверь, если php вывел бы хоть какую-нибудь ошибку, я бы разобрался в ней
или привел бы здесь. Но в том-то и дело, что он ничего не выводит, но и исполнять скрипт не хочет. О работоспособности скрипта, думаю, ни у кого
вопросов не должно возникнуть.
Что касаемо прав на number.txt, то я попробовал все возможные вариации.
Бесполезно. Если права не удовлетворяют, то php так и пишет failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found. Все правильно.
Тогда я решил исключить файл number.txt и переписал вышеприведенный скрипт так:
PHP:
<?
$array_bann=file('banners.txt');
$random=$array_bann[rand(0,count($array_bann)-1)];
list($name, $url, $alt)=explode("|", $random);
echo "<a href=\"".$url."\"><img src=\"http://www.мой_сайт.ru/banners/".$name."\" alt=\"".$alt."\" border=0></a>";
?>
Еще проще, но толку нет. Также дома все пучком работает, а в сети скрипт
срабатывает как надо только первый раз (выводит случайный баннер) и потом
на всех страницах вставляет только его. Так-то.
Еще один интересный момент, после того как баннер загрузился
(и не хотел меняться) я удалил и сам скрипт и файл banners.txt.
Нажал "обновить" и... баннер остался. Откуда он взялся?
Нет, это явно выходит за рамки моих познаний в php.
 

Фанат

oncle terrible
Команда форума
shiko
это писал не тебе, а интенту.

а тебе я с самого начала писал про вторую часть.
молодец, ты все-таки, научился локализовывать проблему.
вот видишь, пока ты писал "не работает", можно только гадать.

а теперь ясно, что проблема в кэшировании.
добавляй к ссылке случайный параметр
 

shiko

Guest
Все, проблема решена.
Дело действительно было в кэше.
Я решил сделать так:
PHP:
Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
Теперь работает
добавляй к ссылке случайный параметр
Фанат, поясни, плиз, свою идею поподробней.


Всем спасибо.
 
Сверху