фильтр ip в скрипте счетчика на php
кароче счетчик и мой собств. ip пиленгует как его фильтровать?
$ip = getenv ("REMOTE_ADDR");
if ($ip=='your_ip'){
die('ah..that's me!!!');
}
надеюсь правильно понял проблему
Цитата:
$ip = getenv ("REMOTE_ADDR");
if ($ip=='your_ip'){
die('ah..that's me!!!');
вот че у меня есть:
Код:
<?php
$dat_file="...";
$log_file="...";
$f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
$count=ereg_replace("\n","",$count);
//как я понимаю именно в этот момент нужно
проверить ip, вернее сравнить его с 1.1.1.1, к
примеру, и если он совпадет - не удваивать счет,
а если не совпадает продолжить и увеличить счет.
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
?>
$dat_file="...";
$log_file="...";
$f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
$count=ereg_replace("\n","",$count);
//как я понимаю именно в этот момент нужно
проверить ip, вернее сравнить его с 1.1.1.1, к
примеру, и если он совпадет - не удваивать счет,
а если не совпадает продолжить и увеличить счет.
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
?>
только было ли опиской слово удваивать?
Цитата:
Originally posted by gufy
совершенно верно.
только было ли опиской слово удваивать?
совершенно верно.
только было ли опиской слово удваивать?
да. конечно описа лся! 8)
вместо
Код:
die()
Код:
exit()
Код:
$dat_file="...";
$log_file="...";
$f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
// начался. кусок который ты мне дал
$count=ereg_replace("\n","",$count);
$ip = getenv ("REMOTE_ADDR");
if ($ip=='156.2.56.304'){
die('bla-bla');
// кончился. кусок который ты мне дал
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
$log_file="...";
$f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
// начался. кусок который ты мне дал
$count=ereg_replace("\n","",$count);
$ip = getenv ("REMOTE_ADDR");
if ($ip=='156.2.56.304'){
die('bla-bla');
// кончился. кусок который ты мне дал
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
и нифига омне не выдает... при любом ip - просто пустое полею 8(
Код:
$ip = getenv ("REMOTE_ADDR");
if ($ip=='100.100.100.100'){
echo die('pizdec');
}
$dat_file="counter/counter.dat"; $log_file="counter/counter.log"; $f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
$count=ereg_replace("\n","",$count);
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
if ($ip=='100.100.100.100'){
echo die('pizdec');
}
$dat_file="counter/counter.dat"; $log_file="counter/counter.log"; $f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
$count=ereg_replace("\n","",$count);
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
только он гад еще кусок html`я обрезает...
люди че делать-то ??? этот скрипт не только завершает свою работу, но и сворачивает html d котором он стоит =( че за хрень???
Цитата:
Originally posted by qik
люди че делать-то ??? этот скрипт не только завершает свою работу, но и сворачивает html в котором он стоит =( че за хрень???
люди че делать-то ??? этот скрипт не только завершает свою работу, но и сворачивает html в котором он стоит =( че за хрень???
Что значит "в котором он стоит"?
он ssi вставляется? тогда не должен
или ты имел ввиду что в коде есть html?
тогда да все верно die именно для этого :)( в perl в die приводит к тому что сервер возращает 500 ошибку и пишет в лог, в php наверное по другому... )
я не пишу на php но правильнее былобы так
Код:
$ip = getenv ("REMOTE_ADDR");
if ($ip!='100.100.100.100')
//или как у вас там не равенство означает
//и еще различается ли сравнение строк и чисел
{
$dat_file="counter/counter.dat";
$log_file="counter/counter.log";
$f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
$count=ereg_replace("\n","",$count);
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
}
if ($ip!='100.100.100.100')
//или как у вас там не равенство означает
//и еще различается ли сравнение строк и чисел
{
$dat_file="counter/counter.dat";
$log_file="counter/counter.log";
$f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);
$count=ereg_replace("\n","",$count);
$count++;
$f=fopen($dat_file,"w");
fputs($f,"$count\n");
fclose($f);
echo "$count";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
$ag=getenv("HTTP_USER_AGENT");
$from=getenv("HTTP_REFERER");
$host=getenv("REQUEST_URI");
fputs($f,"$ip#$ag#$from#$host\n");
fclose($f);
}
и еще RTFM
[phpdoc]fopen[/phpdoc] внимание на 'w+'
[phpdoc]flock[/phpdoc]
[phpdoc]ftruncate[/phpdoc]
[phpdoc]fseek[/phpdoc]