Скрываем ссылочную продажность
Рабочее Май 3rd, 2008
В прошлый раз мы заменяли внешние ссылки в тексте на аля-внутренние.
Сегодня идем дальше и будем скрываться от сервисов, которые очень часто угадывают, какие ссылки были проданы на сайте. Я не бился об стену, рассуждая как можно определить факт продажности. В моем фиде оказалась заметка со ссылкой на «белорусского бомжа», где он и поделился мыслями. Итак, начинаем прятать продажные ссылки.
В общем случае, сама идея от ББ здесь. Моя работа заключалась именно в том, чтобы добавить проверку на наличие допустимых параметров в URL адресе страницы.
В файле sape.php нужно найти строку начала условного блока для удаления параметра сессии:
if (strlen(session_id())) {
У меня это строка номер 318. После этого блока пишем следующее.
// Защита от проверок на ссылки
$my_keys = array('page', 'tag', 'category', 'module'); // Сюда вписать все параметры.
$my_uri = $_SERVER['REQUEST_URI'];
$my_tmp = explode('?', $my_uri);
$my_nu = $my_tmp[0];
if (@$my_tmp[1])
{
$my_tmp2 = explode('&', $my_tmp[1]);
$my_params = array();
foreach ($my_tmp2 as $my_part)
{
@list($my_key, $my_value) = @explode('=', $my_part);
if (in_array($my_key, $my_keys))
$my_params[] = $my_key . '=' . $my_value;
}
if ($my_params)
$my_nu .= '?' . implode('&', $my_params);
}
$this->_request_uri = $my_nu;
Писал наспех мизинцем левой ноги без напряга извилин, поэтому, возможно, покажется корявством. Однако, главные требования спрятать ссылки и ничего не сломать выполнены.
Обратите внимание, что условный блок сапы можно удалить, так как ключа с именем сессии, скорее всего, не будет в Вашем списке ;)
Проверялось здесь и здесь. Далее можно не искать. Но если кто знает другие способы проверки, особенно самизнаетечьи, сообщайте! :)
Tags: hints
About
Прикольно получилось :) Можно будет попробовать это использовать на своих сайтах.
Классно работает.
Единственный универсальный код!
Молодец!