От куда пришел и перекодировка URL

От куда пришел и перекодировка URL | Как узнать, откуда пришли посетители

и

Перекодировка ссылок в человекопонятный вид.

 Code:
http://www.yandex.ru/yandsearch?text=%E9%EE%E6%FB%E3+%F4%F2%F3%EC%E0%ED%E5&stype=www to http://www.yandex.ru/yandsearch?text=йожыг+фтумане&stype=www

Страница, с которой пришли

Адрес передаётся в заголовке HTTP-запроса пользователя в строке "Referrer:". Получить её значение из PHP можно, вызвав соответствующую функцию следующим образом:
 Code:
getenv("HTTP_REFERER")

Как узнать ip, точное время и прочие данные о посетителе

 Code:
$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"); // получаем относительный адрес странички, 

    //которую запросил посетитель 

Перекодировка ссылок в человекопонятный вид.

Обычно, при переходе с ЧПУ русских ссылок, Русских символов не видно - их будут заменять их 16-ричные представления (предваряемые знаком "%"). Поэтому неплохо бы, чтобы скрипт самостоятельно приводил их к удобочитаемому виду: заменял всякие http://www.yandex.ru/yandsearch?text=%E9%EE%E6%FB%E3+%F4%F2%F3%EC%E0%ED%E5&stype=www на http://www.yandex.ru/yandsearch?text=йожыг+фтумане&stype=www Делать мы это будем следующим куском кода с использованием регулярных выражений:
 Code:
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 на символ, который эти два 

        //шестнадцатиричных символа кодировали 

    }// конец цикла :)
Кому надо, можно вести логи в файл.. Только помните, при нормальном количестве посетителей, ваш сервак захломится :)
 Code:
$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);
http://www.internet-technologies.ru/articles/article_247.html
MYSQL Обновление всех значений в базе данных, за один запрос
Как обновить штамп даты на текущую, во все строки в MYSQL
Создание RSS-ленты новостей
Хостинг не оплачен.