MobilPass

Не уверены, какую услугу выбрать? Обратитесь к странице сравнения наших услуг!

Техническое описание

Предоставляемая нами услуга MobilPass является, с точки зрения технологии, лишь способом ограничить возможность посещения того или иного сетевого ресурса пользователем. Для обхода ограничения используются индивидуально генерируемые пароли доступа; каждый такой пароль может иметь время действия и/или лимит количества использований, на усмотрение клиента. Прекращение доступа для лимитированных таким образом паролей происходит, когда выполнилось хотя бы одно условие - либо истекло время, либо превышен лимит использований. Обратите внимание также на то, что изменение настроек Вашего MobilPass скажется только на тех пользователях, которые получили пароль после сделанного Вами изменения.

Характерными особенностями MobilPass являются:

  • легкость и быстрота установки (типовая интеграция занимает пять-десять минут);
  • простота адаптации к требованиям пользователя (возможно не только изменение внешнего вида, но и частичная/полная замена формы запроса - без потери функциональности).

Наши разработчики предлагают вашему вниманию готовые модули интеграции сервиса MobilPass для двух наиболее популярных CMS — блоговой платфомы WordPress и системы DLE. В дополнение к ним был написан Antileech скрипт, препятствующий воровству ссылок на файлы, предназначенные для платного доступа.

Мы постарались обеспечить максимальное удобство использования данных модулей и скрипта, оставив их код открытым, снабдив детальными инструкциями по установке и обеспечив абсолютно бесплатное распространение.

Примеры реализации

Ниже приведены готовые к использованию примеры кода; просто скопируйте и вставьте подходящий в самое начало ресурса, доступ к которому Вы намерены ограничить. При первом посещении ресурса пользователю будут предложены инструкции по получению и форма для ввода пароля, разрешающего доступ. Обратите внимание, что слова идентификатор MobilPass в приведенных примерах необходимо заменить на идентификатор Вашего MobilPass. Естественно, что для успешной работы скриптов необходимо, чтобы сервер поддерживал интерпретацию выбранного Вами языка сценариев в пределах модифицируемого ресурса.

PHP

### MobilPass v1.0.5 ###
$key_id =
идентификатор MobilPass;
$response = @file("http://
pass.mobilcent.com/pass/?s_key=".$key_id
."&s_pair=".urlencode(substr($_GET["s_pair"],0,10))
."&s_language=".urlencode(substr($_GET["s_language"],0,10))
."&s_ip=".$_SERVER["REMOTE_ADDR"]
."&s_url=".$_SERVER["SERVER_NAME"].htmlentities(urlencode($_SERVER["REQUEST_URI"])));
if ($response !== false) {
 if (count($response)>1 || $response[0] != 'true') {
  die(implode("", $response));
 }
} else die('Не удалось запросить внешний сервер');
###
MobilPass end ###
?>

Perl

#!/usr/bin/perl
use CGI qw(:standard);
use HTML::Entities;
use LWP::Simple;
use URI::Escape;
###
MobilPass v1.0.5 ###
$key = идентификатор MobilPass;
$response = get("http://
pass.mobilcent.com/pass/?s_key=" . $key
    . "&s_pair=" . uri_escape(substr($_ = param("s_pair"), 0, 10))
    . "&s_language=" . uri_escape(substr($_ = param("s_language"), 0, 10))
    . "&s_ip=" . $ENV{ "REMOTE_ADDR" }
    . "&s_url=" . $ENV{ "SERVER_NAME" }
    . encode_entities(
uri_escape($ENV{ "REQUEST_URI" })));
if($response ne "true") {
    print "Content-Type: text/html\n\n", $response;
    exit;
}

###
MobilPass end ###

ASP.NET

<%@page language="C#" %>
<%@import namespace="System.Net" %>
<%
/*** MobilPass v1.0.5 ***/
string key = "
идентификатор MobilPass";
byte[] response =
    new WebClient().DownloadData("http://pass
.mobilcent.com/pass/?s_key=" + key
    + "&s_pair=" + (Request.Params["s_pair"] != null
        ? Server.UrlEncode(Request.Params["s_pair"].Length > 10
            ? Request.Params["s_pair"].Substring(0, 10)
            : Request.Params["s_pair"]) : "")
    + "&s_language=" + (Request.Params["s_language"] != null
        ? Server.UrlEncode(Request.Params["s_language"].Length > 10
            ? Request.Params["s_language"].Substring(0, 10)
            : Request.Params["s_language"]) : "")
    + "&s_ip=" + Request.Params["REMOTE_ADDR"]
    + "&s_url=" + Request.Params["SERVER_NAME"]
    +
Server.HtmlEncode(Server.UrlEncode(Request.Params["URL"]
        + Request.Params["QUERY_STRING"])));
if(Encoding.ASCII.GetString(response, 0, 4) != "true") {
    Response.BinaryWrite(response);
    Response.End();
}
/*** MobilPass end ***/
%>

Пример работы скрипта можно увидеть здесь. В случае, если в настройках сервиса Вы указали специфику ресурса "для взрослых", то результат будет несколько отличаться, как показано здесь.

Технология Flash

Несмотря на то, что мы не предоставляем отдельной версии MobilPass для использования на сайтах, построенных целиком на технологии Flash, Вы можете легко проверять пароли MobilPass при помощи следующего ActionScript-кода:

var key : String = new String("идентификатор MobilPass");
var pair : String = new String("пользовательский пароль");
var loadVars : LoadVars = new LoadVars();
loadVars.onLoad = function(success : Boolean) {
    if(success && loadVars.toString() == "true") {
        // пароль подтвержден
    } else {
        // пароль не подтвержден
    }
}
loadVars.load("http://pass
.mobilcent.com/pass/?s_key=" + key
    + "&s_pair=" + pair);

Обратите внимание: слова идентификатор MobilPass нужно заменить на идентификатор Вашего MobilPass, пользовательский пароль - на переданный пользователем пароль, а после комментарев пароль подтвержден и пароль не подтвержден должны идти обработчики обоих ситуаций, соответственно - переход к закрытой части сайта и сообщение об ошибке/предложение ввести пароль повторно.

Модификации кода

Установка языка по умолчанию

По умолчанию все наши сервисы используют русский язык; в том случае, если часть Ваших пользователей не является русскоязычной, или Вы по каким-то другим причинам решили сменить используемый язык сервиса, просто измените адрес запроса в приведенном выше коде с

http://pass.mobilcent.com/pass/

на

http://pass.mobilcent.com/language/english/pass/

(вместо english можно указать любой поддерживаемый язык).

Пример работы можно увидеть здесь.

Для мобильных браузеров

MobilPass теперь доступен также и посетителям WAP-сайтов - для того, чтобы вместо HTML генерировалась WML-разметка, Вам нужно только изменить в приведенном выше коде адрес запроса с

http://pass.mobilcent.com/pass/

на

http://pass.mobilcent.com/pass_wml/

Пример можно посмотреть здесь.

Версия без оформления

Данная модификация предназначена для более тесной интеграции со структурой и дизайном Вашего ресурса. Если скрипту передавать в качестве параметра s_pure=1 (pass.mobilcent.com/pass/?s_pure=1), то в результате работы выводится только актуальная HTML-разметка формы запроса; внешний вид формы, таким образом, легко видоизменить при помощи CSS. Пример работы скрипта находится здесь.

Обратите внимание, что кодировкой по умолчанию для версии MobilPass без оформления является windows-1251. Задать кодировку можно при помощи параметра s_enc (например, ?s_enc=koi8-r).

Если директива allow_url_fopen отключена

Некоторые хостинги отключают возможность отправки GET-запроса удаленному скрипту при помощи функции file(). Специально для таких случаев существует приведенный здесь альтернативный код MobilPass:

### MobilPass v1.0.5 Extended ###
$key_id =
идентификатор MobilPass;
$response = do_key_check("http://
pass.mobilcent.com/pass/?s_key=".$key_id
."&s_pair=".urlencode(substr($_GET["s_pair"],0,10))
."&s_language=".urlencode(substr($_GET["s_language"],0,10))
."&s_ip=".$_SERVER["REMOTE_ADDR"]
."&s_url=".$_SERVER["SERVER_NAME"].htmlentities(urlencode($_SERVER["REQUEST_URI"])));
if (substr($response, 0, 4)  != 'true') {
 die($response);
}
###
MobilPass end ###
function do_key_check ($url = '') {
 if (ini_get('allow_url_fopen') == 1) {
  $response = file($url);
  if ($response !== false) {
   return(implode("", $response));
  } else return('Не удалось запросить внешний сервер (1)');
 } elseif (function_exists('curl_init')) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $response = curl_exec ($ch);
  if (curl_error($ch) == '') {
   return($response);
  } else return('Не удалось запросить внешний сервер (2)');
  curl_close($ch);
 }
 return('Не удалось запросить внешний сервер (3)');
}
?>

Вывод своего интерфейса

Используя MobilPass, вы можете не только видоизменять стандартную форму ввода, но и выводить полностью свою версию интерфейса. Для вывода формы ввода пароля воспользуйтесь следующим PHP кодом:

echo '

.$_SERVER["REQUEST_URI"].'" method="get">

';

В эту форму вы можете по мере надобности добавлять любые необходимые параметры, и они в случае успешного ввода пользователем пароля будут переданы вашему коду, идущему после MobilPass.

Чтобы вывести инструкции об отправке смс, вам потребуется список тарифов вашего MobilPass. Вы можете получить эти данные по адресу вида

http://pass.mobilcent.com/xml/pass/идентификатор MobilPass/

Упомянутый XML-файл содержит также информацию о номерах, на которые пользователи должны отправлять сообщения (поле number), и префиксах, необходимых для обработки сообщений нашей системой (поле prefix); в разных странах, соответственно, действуют разные номера и префиксы. Для того, чтобы сообщение было ассоциировано с Вашим сервисом, оно должно иметь вид

префикс идентификатор MobilPass

и быть отправлено на действующий в рамках страны номер, верный для выбранного Вами тарифа.

Если какая-либо страна не фигурирует в упомянутой выше тарифной сетке, значит, в данной стране отсутствует выбранный Вами при настройке тариф и она таким образом исключена из обработки; сообщения, отправленные пользователями, проживающими на территории этой страны, будут проигнорированы.

Имеет смысл отметить, что все приведенные выше модификации совместимы между собой, т.е. вы можете использовать альтернативный код MobilPass, указав при этом кодировку и т.д.

Удаленное размещение MobilPass

В стандартной версии MobilPass всю работу по выдаче и отслеживанию паролей выполняет наш сервер, упрощая таким образом установку и настройку услуги, но одновременно лишая ее некоторой гибкости. Учитывая популярность услуги MobilPass среди наших клиентов, мы решили пересмотреть некоторые аспекты ее использования. Так появилась версия с удаленным размещением, преимущества которой перед стандартным MobilPass таковы:
- все пароли хранятся и обрабатываются на Вашей стороне, давая таким образом возможность локально управлять сессиями пользователей;
- Вы можете управлять как внешним видом, так и в определенных пределах принципом работы услуги;
- услуга максимально устойчива к разного рода атакам на наши сервера, перебоям работы сети и т. д.

Внимание: для использования этой версии MobilPass категорически необходимо понимание общих принципов работы скриптов, исполняемых на стороне сервера.

техническое описание удаленного размещения >>

Часто задаваемые вопросы

Невозможно выбрать страну, список стран пуст

Проверьте файл .htaccess, вероятно, он содержит правила, обрезающие передаваемые скрипту параметры; также проверьте, что тариф, выбранный в настройках MobilPass, доступен по меньшей мере в одной стране. В частности, такая ошибка возникает, если в настройках выставлена опция "всегда использовать максимальный тариф", а в поле "не более" стоит $0.

Кодировка страницы неправильная, что делать?

Перед строкой die(implode(...)) в коде скрипта добавьте следующую строку:
header('Content-Type: text/html; charset=utf-8');

Вместо формы ввода пароля я вижу код PHP

Убедитесь, что имя файла с кодом MobilPass оканчивается на .php. Также удостоверьтесь, что ваш хостинг поддерживает PHP (это можно узнать в службе поддержки хостинга).