$er_time=date("H:i:s d M Y"); // записываем текущее время в строку, 
 //используя заданный формат 
 $U=getenv("HTTP_USER_AGENT"); // получаем данные о софте, 
 //который испольует пользователь 
 $H=getenv("HTTP_REFERER"); // получаем URL, с которого пришёл посетитель 
 $R=getenv("REMOTE_ADDR"); // получаем IP посетителя 
 $W=getenv("REQUEST_URI"); // получаем относительный адрес странички, 
 //которую запросил посетитель  while (ereg('%([0-9A-F]{2})',$H)){ // пока в строке $H будет хоть одно 
 //сочетание знака % и двух символов из диапазонов 0-9 и A-F 
 //(шестнадцатиричные цифры) 
 $val=ereg_replace('.*%([0-9A-F]{2}).*','\1',$H); 
 // присваиваем $val результат замены выражения, 
 //содержащего процент и два символа из означенных выше интервалов, 
 //на эти самые два символа 
 // короче говоря, теперь в $val у нас очередные 2 символа, 
 //перед которыми в исходном выражении стоял процент 
 $newval=chr(hexdec($val)); // получаем сивол с номером, 
 //полученным переведением полученного в $val 
 //шестнадцатиричного числа в "нормальное" 
 $H=str_replace('%'.$val,$newval,$H); 
 //стандартная строковая функция замены — 
 //заменяет подстроку, состоящую из процента и друх символов 
 //из переменной $var на символ, который эти два 
 //шестнадцатиричных символа кодировали 
 }// конец цикла 
 
 $f=fopen("logs/visits.log",'a'); // дальше — понятно, пишем всё это в файл 
 flock ($f,2); 
 fwrite($f,"$er_time\n Br: $U\n Rf: $H\n IP: $R\n Rq: $W\n"); 
 fclose($f);