Снова о защите продажных ссылок

Уже писал ранее о способе защиты продажных ссылок, там был универсальный способ, где вырезались все левые GET-параметры из запроса. К сожалению в ряде случаев от не работает, например при отправке запроса без GET-параметров, но со знаком “?” (типа http://www.site.ru/?). Сначала хотел переписать тот код и убрать эту проблему, но затем решил изучить код САПы и Меинлинка (использую эти две биржи) и понять суть.

Оказалось, что в коде Меинлинка уже есть все необходимое для защиты, просто ссылки нужно отображать не через $ml->Get_Links(), а через $ml->Get_Links_Protected(). Надо было курить маны по установке =)

В САПе нет такой функции, зато можно переопределить опцию request_uri при вызове кода! Поэтому я переписал код вызова так:

require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
 $o['host'] = 'www.site.ru';
if ($_SERVER['REDIRECT_URL']) $o['request_uri'] = $_SERVER['REDIRECT_URL'];
else $o['request_uri'] = '';
$o['charset'] = 'UTF-8';
$sape = new SAPE_client($o);
unset($o);

Магия тут во второй и третьей строке, переопределяется, какой адрес страницы будет искать код сапы в своей базе ссылок для вашего сайта. Переменная $_SERVER[‘REDIRECT_URL’] содержит название запрашиваемого документа без GET-параметров! Например, если в адресной строке запрошен адрес http://www.site.ru/category/page.html?link=1, то в этой переменной будет только /category/page.html! То есть, с какими бы GET-параметрами не запросили страницу, сапа все равно будет искать один и тот же адрес в базе ссылок. REDIRECT_URL для главной страницы сайта не указывается, поэтому в опции сапы передается пустая строка. На нормально сконфигурированном Апаче и PHP и включенном ЧПУ все работает идеально, как будет работать с другими серверами и настройками я не знаю, для меня это темный лес пока =)