2014-10-11 2 views
-1
$ip = $_SERVER['REMOTE_ADDR'];      //get IP 
$referer = $_SERVER['HTTP_REFERER'];     //get referer 
$time = time();          //extracting timestamp 
$date = date('d-m-y H:i:s',$time);     //generating date 
$f = fopen("log.php", "a");       //opening files 
$counter = fgetc("hitleap.txt"); 
$f2 = fopen("hitleap.txt", "w+"); 

if($referer == "http://hitleap.com/traffic-exchange"){ 
fwrite($f2, $counter++);        
fclose($f2); 
} else { 
fwrite ($f, '<div class="spoiler"><input type="button" onclick="showSpoiler(this)" value="Show/Hide" /> 
Data/Ora: <b>['.$date.']</b><br> 
<div class="inner" style="display:none"> 
IP: <b>['.$ip.']</b> <br> 
Provenienza: <b>['.$referer.']</b> 
</div></div><br> 



'); 
fclose($f); 
} 

В принципе, если посетитель сайта приходит с сайта hitleap, я хочу увеличить число внутри файла txt на 1. Если нет, добавьте в другой файл журнала его IP и референт внутри спойлера , Вторая часть работает очень хорошо, но я не могу получить первую часть работыPHP increment by 1 issue

Также hlaimap.txt как-то очищается каждый раз, когда применяется «else».

EDIT решаемые так:

$ip = $_SERVER['REMOTE_ADDR']; 
$referer = $_SERVER['HTTP_REFERER']; 
$time = time(); 
$date = date('d-m-y H:i:s',$time); 
$hits = file_get_contents("hitleap.txt"); 
$nhits = $hits+1; 

if($referer == "http://XXX"){ 
$f2 = fopen("hitleap.txt", "w+"); 
fwrite($f2, $nhits); 
fclose($f2); 
} else { 
$f = fopen("log.php", "a"); 
fwrite ($f, '[email protected] u want here'); 
fclose($f); 
} 

, кажется, работает хорошо для меня

+0

'fwrite ($ f2, $ counter ++);' сначала он записывает значение и увеличивает счетчик '$ counter'. напишите его как 'fwrite ($ f2, ++ $ counter);' – Cheery

+1

$ f2 = fopen ("hitleap.txt", "w +"); - Это откроет файл hitleap.txt в режиме записи, после удаления его предыдущего содержимого. Он должен работать нормально, если вы поместите эту строку внутри блока if. – Ananth

+0

Sidenote о '$ _SERVER ['HTTP_REFERER']' => http://stackoverflow.com/a/6023980/ –

ответ

1

Ваш окончательный код будет выглядеть так:

$ip = $_SERVER['REMOTE_ADDR'];      //get IP 
$referer = $_SERVER['HTTP_REFERER'];     //get referer 
$time = time();          //extracting timestamp 
$date = date('d-m-y H:i:s',$time);     //generating date 
$f = fopen("log.php", "a");       //opening files 
$counter = fgetc("hitleap.txt"); 

// this line has been moved into the if block 

if($referer == "http://hitleap.com/traffic-exchange"){ 
$f2 = fopen("hitleap.txt", "w+"); // here it is 
fwrite($f2, ++$counter);      // using ++$counter  
fclose($f2); 
} else { 
fwrite ($f, '<div class="spoiler"><input type="button" onclick="showSpoiler(this)" value="Show/Hide" /> 
Data/Ora: <b>['.$date.']</b><br> 
<div class="inner" style="display:none"> 
IP: <b>['.$ip.']</b> <br> 
Provenienza: <b>['.$referer.']</b> 
</div></div><br> 



'); 
fclose($f); 
} 
+0

Пробовал это. Файл hitleap.txt по-прежнему очищается, а не увеличивается число. – Walt9

2

Вы хотите использовать

fwrite($f2, ++$counter); 

вместо

fwrite($f2, $counter++); 

Что происходит в том, что ваше приращении переменного после того, как он был записан в файл, а не раньше. Решение будет увеличивать переменную перед ее записью.