Текст CGIскрипта
Листинг 10.1. Текст CGI-скрипта, осуществляющего переадресацию пользователя
# ! /usr/local/bin/perl
# Получение параметров, передаваемых скрипту
@pairs = split (/&/, $ENV{ ' QUERY_STRING ' )) ;
foreach $pair (Opairs)
{
($name, $value) = split (/=/, $pair) ;
$PARAMS{$name} = $ value;
}
$product = $PARAMS{ 'product' };
$registar = $PARAMS{ ' register '};
# Объявление переменной (хотя в Perl оно не нужно) ;
$redir = "";
# Адрес, на который пользователь переадресовывается по умолчанию
$default = "http://www.regnow.com/.../";
# Адреса для переадресации
# Первая цифра в названии переменной
# обозначает продукт, вторая — регистратора
$redir_l_l = "http: //www. regnow. com/ ... /product1";
$redir_l_2 = "http: //www. regsoft. com/ ... /product1";
$redir_2_l = "http: //www. regnow. com/ ... /product2";
$redir_2_2 = "http: //www. regsoft. com/ ... /product2";
}
$redir_3_1 = "http://www.regnow.com/.../products";
$redir_3_2 = "http://www.regsoft.com/.../products";
# Анализ параметров if ($product == 1)
if (registar == 1) {$redir = $redir_1_1;
}
if (registar == 2) {$redir = $redir_1_2;
}
if ($product == 2)
if (registar == 1) {$redir = $redir_2_1;
}
if (registar == 2) {$redir = $redir_2_2;
}
if ($product == 3)
if (registar == 1) {'$redir = $redir_3_1;}
if (registar == 2) {$redir = $redir_3_2;}
# Переадресация
if ($redir ne "")
print "Location: $redir\n\n";
exit;
}
print "Location: $default\n\n";
exit;
Как видите, структура программы очень проста. В ней, для примера, приводится переадресация для трех различных программ, платежи за которые принимаются двумя регистраторами. С помощью комбинации клавиш <Copy>
+<Paste>
и несложных модификаций текста можно расширить количество программ и регистраторов, которые учитывает скрипт, до требуемого числа. Сохранив получившийся текстовый файл под именем, например register.cgi, и скопировав его в каталог cgi-bin вашего виртуального Web-сервера, можно прямые ссылки на страницу регистратора в документации программы поменять на ссылки на register.cgi. Например, для переадресации пользователя на страницу регистрации, созданную первым регистратором для первой программы из списка, нужно поставить ссылку на http:// www.Bam_caйт.com/cgi-bin/register.cgi?product=l®istar=l, а если требуется перенаправить пользователя для регистрации третьего продукта через второго регистратора, то ссылка должна вести на httр://Ваш.ваш_сайт.соm /cgi-bin/register.cgi?product=3®istar=2.
Помимо документации, эти ссылки можно поставить и в разделб "Регистрация" Web-сайта программы. Тогда при смене регистратора нужно будет поменять адреса страниц регистрации только в исходном тексте скрипта, не редактируя текст Web-страницы раздела "Регистрация".
Этот скрипт может пригодиться и в том случае, если вы, например, уезжаете в отпуск и не нашли кого-то, кто будет рассылать регистрационные ключи вместо вас, а регистратору по каким-то причинам рассылку ключей поручить нельзя. Достаточно заменить в скрипте адреса регистраторов на адрес страницы на вашем сайте, где сообщить, что регистрация по техническим причинам временно не доступна и объявить дату возобновления работы. Конечно, это не назовешь идеальным решением проблемы, однако это наименьшее зло по сравнению с претензиями пользователей, оплативших регистрацию, но не дождавшихся ключа.
Модифицировав исходный текст скрипта по своему усмотрению (для этого, конечно, вам понадобится знание языка Perl), можно существенно расширить функциональность скрипта, например, "перебрасывать" пользователей на разные страницы в зависимости от страны их проживания, собирать различную статистику и т. д.