Итак... За исходник я взял файл register.php из этого скрипта.
Поехали... Качаем новый сертификат WebMoney . Его льём в корень сайта.
Следующим шагом открываем наш register.php и находим:
Следом добавляем код:
$urlid="RID сюда !!!";
if(isset($_POST['WmLogin_UrlID']))
{
$testticket=preg_match('/^[a-zA-Z0-9$!/]{32,48}$/i', $_POST['WmLogin_Ticket']);
if($_POST['WmLogin_UrlID']==$urlid && $testticket==1) {
$xml="
Сюда ваш вмид
".$_POST['WmLogin_WMID']."
".$_POST['WmLogin_Ticket']."
".$urlid."
".$_POST['WmLogin_AuthType']."
".$_POST['WmLogin_UserAddress']."
";
$root=$_SERVER["DOCUMENT_ROOT"];
$CertPath="$root/WMUsedRootCAs.cer";
function _GetAnswer($xml){
global $CertPath;
// Инициализируем сеанс CURL
$ch = curl_init("https://login.wmtransfer.com/ws/authorize.xiface");
// В выводе CURL http-заголовки не нужны
curl_setopt($ch, CURLOPT_HEADER, 0);
// Возвращать результат, а не выводить его в браузер
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// Метод http-запроса - POST
curl_setopt($ch, CURLOPT_POST,1);
// Что передаем?
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
// Задаем корневой сертификат для проверки
curl_setopt($ch, CURLOPT_CAINFO, $CertPath);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
// Выполняем запрос, ответ помещаем в переменную $result;
$result=curl_exec($ch);
if(curl_errno($ch)) echo "Curl Error number = ".curl_errno($ch).", Error desc = ".curl_error($ch)."
";
curl_close($ch);
return $result;
}
$resxml=_GetAnswer($xml);
$xmlres = simplexml_load_string($resxml);
if(!$xmlres) echo "Не получен XML-ответ";
$result=strval($xmlres->attributes()->retval);
if($result=='0')
{
$wmid=$_POST["WmLogin_WMID"];
$_SESSION[regwmid]=$wmid;
}else{
echo "Произошла ошибка при попытке авторизоваться...
Пройти авторизацию повторно...";
include('footer.php');
exit;
}
}else{
echo "Произошла ошибка при попытке авторизоваться...
Пройти авторизацию повторно...";
include('footer.php');
exit;
}
}
if(!isset($_SESSION[regwmid]))
{
echo "Для продолжения регистрации пройдите авторизацию через Login.wmtransfer.com.
Пройти авторизацию...";
include('footer.php');
exit;
}
Не забываем, что код необходимо поправить, а именно: ввести свой WMID в нужное место и ввести rid ссылки. Как его получить описано тут.
Продолжим... Опустимся ниже и найдём код:
Поскольку после авторизации WMID задаётся сессией - принимать его нам уже с POST запроса не нужно. Меняем код выше на:
Спускаемся ниже... В принципе шаг можно опустить, однако можно и сделать. Если мы хотим,чтобы после регистрации сессия обнулялась - после запроса примерно такого вида:
Добавим:
Однако, это тоже не всё. Спустимся ещё ниже в чистый HTML и найдём строки примерно такого вида:
В принципе, можно вообще эту строку удалить и вместо неё вставить:
Тогда будет выводить просто WMID. А можно видоизменить строчку на:
В этом случае мы получим просто заблокированное для редактирования поле с уже вставленным WMID.
Код у вас может отличаться. Я всего лишь привёл пример...
В принципе, всё. Жду комментариев.
Поехали... Качаем новый сертификат WebMoney . Его льём в корень сайта.
Следующим шагом открываем наш register.php и находим:
if(isset($_SESSION["username"]) && isset($_SESSION["password"]))
{
echo "
Вы уже зарегистрированы...";
include('footer.php');
exit();
}
{
echo "
Вы уже зарегистрированы...";include('footer.php');
exit();
}
Следом добавляем код:
$urlid="RID сюда !!!";
if(isset($_POST['WmLogin_UrlID']))
{
$testticket=preg_match('/^[a-zA-Z0-9$!/]{32,48}$/i', $_POST['WmLogin_Ticket']);
if($_POST['WmLogin_UrlID']==$urlid && $testticket==1) {
$xml="
Сюда ваш вмид
".$_POST['WmLogin_WMID']."
".$_POST['WmLogin_Ticket']."
".$urlid."
".$_POST['WmLogin_AuthType']."
".$_POST['WmLogin_UserAddress']."
";
$root=$_SERVER["DOCUMENT_ROOT"];
$CertPath="$root/WMUsedRootCAs.cer";
function _GetAnswer($xml){
global $CertPath;
// Инициализируем сеанс CURL
$ch = curl_init("https://login.wmtransfer.com/ws/authorize.xiface");
// В выводе CURL http-заголовки не нужны
curl_setopt($ch, CURLOPT_HEADER, 0);
// Возвращать результат, а не выводить его в браузер
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// Метод http-запроса - POST
curl_setopt($ch, CURLOPT_POST,1);
// Что передаем?
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
// Задаем корневой сертификат для проверки
curl_setopt($ch, CURLOPT_CAINFO, $CertPath);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
// Выполняем запрос, ответ помещаем в переменную $result;
$result=curl_exec($ch);
if(curl_errno($ch)) echo "Curl Error number = ".curl_errno($ch).", Error desc = ".curl_error($ch)."
";
curl_close($ch);
return $result;
}
$resxml=_GetAnswer($xml);
$xmlres = simplexml_load_string($resxml);
if(!$xmlres) echo "Не получен XML-ответ";
$result=strval($xmlres->attributes()->retval);
if($result=='0')
{
$wmid=$_POST["WmLogin_WMID"];
$_SESSION[regwmid]=$wmid;
}else{
echo "Произошла ошибка при попытке авторизоваться...
Пройти авторизацию повторно...";
include('footer.php');
exit;
}
}else{
echo "Произошла ошибка при попытке авторизоваться...
Пройти авторизацию повторно...";
include('footer.php');
exit;
}
}
if(!isset($_SESSION[regwmid]))
{
echo "Для продолжения регистрации пройдите авторизацию через Login.wmtransfer.com.
Пройти авторизацию...";
include('footer.php');
exit;
}
Не забываем, что код необходимо поправить, а именно: ввести свой WMID в нужное место и ввести rid ссылки. Как его получить описано тут.
Продолжим... Опустимся ниже и найдём код:
$wmid=$_POST["wmid"];
Поскольку после авторизации WMID задаётся сессией - принимать его нам уже с POST запроса не нужно. Меняем код выше на:
$wmid = $_SESSION[regwmid];
Спускаемся ниже... В принципе шаг можно опустить, однако можно и сделать. Если мы хотим,чтобы после регистрации сессия обнулялась - после запроса примерно такого вида:
$query = "INSERT INTO tb_users (username, password, ip, pemail, referer, country, joindate, wmid, buying) VALUES('$username','$password','$laip','$pemail','$referer','$country','$joindate','$wmid','$buying')";
mysql_query($query) or die(mysql_error());
mysql_query($query) or die(mysql_error());
Добавим:
unset($_SESSION[regwmid]);
Однако, это тоже не всё. Спустимся ещё ниже в чистый HTML и найдём строки примерно такого вида:
В принципе, можно вообще эту строку удалить и вместо неё вставить:
<?=$_SESSION[regwmid]; ?>
Тогда будет выводить просто WMID. А можно видоизменить строчку на:
В этом случае мы получим просто заблокированное для редактирования поле с уже вставленным WMID.
Код у вас может отличаться. Я всего лишь привёл пример...
В принципе, всё. Жду комментариев.
6 комментарии
0 загрузки
Детали
- Первый релиз 28 июл 2011
- Последнее обновление 03 авг 2026
- Документация Есть
- Содержимое файлов Исходные файлы
- Всего товаров 203
- Рейтинг (0)
- Регистрация 19 фев 2011
- Уровень 0
- Пользователь подтверждён Да
- Телефон подтверждён Нет
- Email подтверждён Нет

sarancew
- 25 апр 2013ошибки в коде
daranger
- 13 янв 2012тоже ошибка
LOZNEVOI
- 27 ноя 2011я делал намного проще!
grower
- 03 окт 2011У меня МФС. Я не знаю, но при вставке кодов, как оиписано тут, видает ошибку
trdnepr
- 10 авг 2011окно запускается с потом
POST method required