В прошлый раз мы заменяли внешние ссылки в тексте на аля-внутренние.

Сегодня идем дальше и будем скрываться от сервисов, которые очень часто угадывают, какие ссылки были проданы на сайте. Я не бился об стену, рассуждая как можно определить факт продажности. В моем фиде оказалась заметка со ссылкой на «белорусского бомжа», где он и поделился мыслями. Итак, начинаем прятать продажные ссылки.

В общем случае, сама идея от ББ здесь. Моя работа заключалась именно в том, чтобы добавить проверку на наличие допустимых параметров в 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:



Reader's Comments

  1. cross | Май 27th, 2008 at 11:22

    Прикольно получилось :) Можно будет попробовать это использовать на своих сайтах.

    Reply to this comment
  2. Guest | Октябрь 15th, 2009 at 10:49

    Классно работает.
    Единственный универсальный код!

    Молодец!

    Reply to this comment

Leave a Comment