Проблемы с header

Николай

PHP - CooL
Проблемы с header

Вот код:
PHP:
$b1="http://sid.com.ru/banner/88_31_3.gif";
$b2="http://sid.com.ru/banner/88_31_2.gif";
$b3="http://sid.com.ru/banner/88_31.gif";
$r=rand(1,3);
if($r=="1"){
header ("Location: $b1"); 
}
if($r=="2"){
header ("Location: $b2"); 
}
if($r=="3"){
header ("Location: $b3"); 
}
$l="close/banner/b$id.txt";
if(file_exists($l)){
$f=fopen("$l","r");
$c=fread($f,100);
$c=$c+1;
fclose($f);
$f=fopen("$l","w");
fwrite($f,$c);
fclose($f);
}
else{
$f=fopen("$l","w");
fwrite($f,"1");
fclose($f);
}
Этот код вызывает банер на странице, то есть img src="banner.php?id=1" .По сути все нормально, но иногда почему-то он не показывает банер. Не подскажите из-за чего это может быть?
 

tony2001

TeaM PHPClub
Уважаемые ученые!
Вот уже полгода у меня в подполе раздается подземный стук.
Объясните, пожалуйста, как он происходит.
 

Demiurg

Guest
А нам уже не смешно такие вопросы читать.
 

tony2001

TeaM PHPClub
могу только повторить.
"иногда почему-то" - это потрясающее описание проблемы.
видимо, теперь предполагается, что все должны броситься отлаживать твой код.
найди это "иногда" и мы скажем "почему".
понятие "отладка", надеюсь, тебе знакомо ?
 

Alkinoy

Guest
Попробуй так

define("BANNER1", "http://sid.com.ru/banner/88_31_3.gif");

а потом

Header("Location: ".BANNER1);
 

tony2001

TeaM PHPClub
Alkinoy:
угу...
еще в бубен постучать и винду переставить.
это все, конечно, сильно поможет.
 

woland

Guest
И ничего смешного...
Проблема где-то в rand();
Вообще-то, перед использованием этой ф-ии принято инитить генератор:

srand((double)microtime()*1000000);
 

Demiurg

Guest
>Проблема где-то в rand();
какая в нем может быть проблема ??
 

Demiurg

Guest
>А разве я не написал - в чём проблема?
ты действительно думаешь, что это поможет ? Уж лучше бубен.
 

woland

Guest
Откуда у тебя такая увереность?..
Возьми и проверь, а потом поговорим.
 

Demiurg

Guest
>Откуда у тебя такая увереность?
считай, что я - телепат.
 

RU$LAN

Guest
ИМХО так короче (а може и красивше) :

PHP:
$b1="http://sid.com.ru/banner/88_31_3.gif"; 
$b2="http://sid.com.ru/banner/88_31_2.gif"; 
$b3="http://sid.com.ru/banner/88_31.gif"; 
$r=rand(1,3); 

$b="b".$r;

header ("Location:".$b);  


$l="close/banner/b$id.txt";  
/* а это как прикажете понимать? 

может так: */
$l="close/banner/b".$id.".txt";  


if(file_exists($l)){ 
$f=fopen("$l","r"); 
$c=fread($f,100); 
$c=$c+1; 
fclose($f); 
$f=fopen("$l","w"); 
fwrite($f,$c); 
fclose($f); 
} 
else{ 
$f=fopen("$l","w"); 
fwrite($f,"1"); 
fclose($f); 
}
:confused: :confused:
 

Олег

Guest
Доброго времени суток.
Возможно два изменения
1) использовать функцию array_rand()
2) если использовался Php 3.0.6 или более ранний – то в результате будут получены не числа 1,2,3 , а 1,2,3,4 – а на 4 вариант ничего не предусмотрено.
К Народу, люди, человек к вам обратился за помощью, а вы его чморите – очень умные?
 

Николай

PHP - CooL
Привет, Олег.

Слушай а ведь ты правду сказал, я проверил иногда получается четвертое число, интерестно почему, PHP стоит на хосте вроде 4.

И спасибо за поддержку :)
 

RomikChef

Guest
никто его не чморит.
тебе показалось.

а за информацию - спасибо. Никогда не слышал о таком поведении rand.
А ты точно имел в виду 3.0.6 или все-таки, 4?
 

Nime

Guest
Вроде именно 3.0.6.

int rand (int min, int max)

Note: In versions before 3.0.7 the meaning of max was range. To get the same results in these versions the short example should be rand (5, 11) to get a random number between 5 and 15.
 

RomikChef

Guest
просто сейчас и 3.0.1х найти-то проблематично, а уж такая ископаемая версия, как 3.0.6 - вообще, должно быть, из области фантастики...
 
Сверху