Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Языки программирования

Важная информация

Языки программирования Изучаем С++, Sql, php, Lua, Python

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.11.2011, 14:29   #41
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
Радость

Для подключения класса SOAP к PHP откройте файл php.ini, найдите строку
; extension=php_soap.so (или ; extension=php_soap.dll) и удалите перед ней точку с запятой.

Внимание! Вполне возможно, что библиотека php_soap.dll в вашем PHP может отсутствовать. В этом случае необходимо найти эту самую библиотеку в сети и поместить в папку с остальными похожими библиотеками (порыскайте в папке php - там на "поверхности" всё), она обязательно должна быть той же версии, что и сам PHP. А вообще, я рекомендую загрузить исходники PHP и фактически переставить его, это будет и проще, и быстрее, и библиотеки там все нужные сразу есть.


# Для настройки технологии SOAP в MaNGOS откройте mangosd.conf, найдите и выставьте следующие параметры:
#
# SOAP.Enabled = 1
# SOAP.IP = 127.0.0.1
# SOAP.Port = 7878



Если у вас работает фаерволл (или антивирус с соотв. защитой),
обязательно убедитесь, что указанный в скрипте порт (в примере это
7878) открыт для подключения к mangosd.exe с локального хоста.


PHP код:
<?php
$command 
'server info';
$host '127.0.0.1';
$port 7878;
$user 'admin';
$pass 'admin';

if(!
class_exists('SoapClient'))
  die(
'Error: class SOAP is undefined');

$client = new SoapClient(NULL, array(
  
'location'     => 'http://'.$host.':'.$port.'/',
  
'uri'          => 'urn:MaNGOS',
  
'style'        => SOAP_RPC,
  
'login'        => $user,
  
'password'     => $pass,
  
'encoding'     => 'windows-1251'
));

try
{
  echo 
$client->executeCommand(new SoapParam($command'command'));
}
catch(
Exception $e)
{
  echo 
$e->getMessage();
}
?>

__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет

Последний раз редактировалось Hantet; 21.11.2011 в 14:32.
Hantet вне форума   Ответить с цитированием
Старый 21.11.2011, 20:41   #42
wroud
Новичок
 
Регистрация: 19.10.2010
Сообщений: 21
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
wroud На верном пути
Радость

после 2 этапа ответ сервера на поступившие данные

Добавлено через 1 минуту
Цитата:
Сообщение от Hantet Посмотреть сообщение
Если у вас работает фаерволл (или антивирус с соотв. защитой),
обязательно убедитесь, что указанный в скрипте порт (в примере это
7878) открыт для подключения к mangosd.exe с локального хоста.
надо посмореть

Код:
HTTP Error: 401 Unauthorized
сейчас гляну на каких портал работает сервер
мб там что найду

нет соап у сервера точно работает.

мб из за кодировки?

Но в консоли при команде нет статус данного порта нет так же как и 80 и тп но http://127.0.0.1:7878/ открываеться

Последний раз редактировалось NeatElves; 21.11.2011 в 21:59.
wroud вне форума   Ответить с цитированием
Старый 21.11.2011, 21:04   #43
Кот ДаWINчи
Умный
 
Аватар для Кот ДаWINчи
 
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
Кот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человек
Отправить сообщение для Кот ДаWINчи с помощью ICQ Отправить сообщение для Кот ДаWINчи с помощью Skype™
По умолчанию

Цитата:
Сообщение от wroud Посмотреть сообщение
мб из за кодировки?

Но в консоли при команде нет статус данного порта нет так же как и 80 и тп но http://127.0.0.1:7878/ открываеться
о надо же...наконец-то хоть что-то прояснилось. Если телнетом порт открывается, то сервер мангоса настроен правильно. Можешь более его не трогать. теперь смотри на свой апач. Что-то в нем не настроено. И после изменения настроек не забывай перестартовывать сервис апача, иначе твои настройки не вступят в силу.

и кодировка тут не при чём.
Кот ДаWINчи вне форума   Ответить с цитированием
Старый 22.11.2011, 12:39   #44
wroud
Новичок
 
Регистрация: 19.10.2010
Сообщений: 21
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
wroud На верном пути
По умолчанию

Цитата:
и кодировка тут не при чём.
да я в этом убедился , но надо проверять все варианты.

Апатч? а не пхп?

наверно всёже со скриптом что-то не то

либо в моём случае нужно что то добавить

Последний раз редактировалось NeatElves; 22.11.2011 в 14:34. Причина: Существует кнопка "ПРАВКА"
wroud вне форума   Ответить с цитированием
Старый 22.11.2011, 16:16   #45
Кот ДаWINчи
Умный
 
Аватар для Кот ДаWINчи
 
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
Кот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человек
Отправить сообщение для Кот ДаWINчи с помощью ICQ Отправить сообщение для Кот ДаWINчи с помощью Skype™
По умолчанию

Цитата:
Сообщение от wroud Посмотреть сообщение
да я в этом убедился , но надо проверять все варианты.

Апатч? а не пхп?
Извиняюсь, конечно ПХП. (нельзя писать дельные посты так поздно вечером)

Если extension=php_soap.dll включен, то скрипт из 1-го поста этой темы должен работать. У меня заработал сразу. Только надо правильно данные подключения вписать.
Кот ДаWINчи вне форума   Ответить с цитированием
Старый 22.11.2011, 17:04   #46
wroud
Новичок
 
Регистрация: 19.10.2010
Сообщений: 21
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
wroud На верном пути
По умолчанию

так в том то и дело что модуль соап подключен в php
wroud вне форума   Ответить с цитированием
Старый 15.12.2011, 12:02   #47
tr0yka
Гость
 
Сообщений: n/a
По умолчанию

Зачем SOAP? ИМХО лучше сокеты.
  Ответить с цитированием
Старый 15.12.2011, 14:48   #48
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Цитата:
Сообщение от tr0yka Посмотреть сообщение
Зачем SOAP? ИМХО лучше сокеты.
fsockopen и прочие функции с сокетами требуют таймаута, то есть они асинхронные, к тому же даже если время на таймаут прошло, нельзя с уверенностью сказать, что запрос выполнен.
А в случае с SOAP можно гарантировать, что поток не вернётся к основному коду до выполнения запроса в консоль, или если консоль окончательно и бесповоротно недоступна.
Добавлю, что лично я не знаю о существовании функций а-ля select() для PHP.
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет
Hantet вне форума   Ответить с цитированием
Старый 15.12.2011, 16:39   #49
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Hantet Посмотреть сообщение
Добавлю, что лично я не знаю о существовании функций а-ля select() для PHP.
PHP код:
  $sock fsockopen("localhost"3443$errno$errstr);

  if (!
$sock)
  {
    echo(
"$errno($errstr)");
    return 
NULL;
  }
  else
   {
    
stream_set_timeout($sock5);
    
$temp fgets$sock );
    
$temp fread($sock,9);
    
fputs ($sock"admin\r");
    
$temp fread($sock,9);
    
fputs ($sock"password\r");
    
$temp fread($sock,10);
    
fputs($sock".server info\r\n");
    
$temp fread($sock,1024);
    return 
$sock;
   }
}; 
старо аж жуть но пашет.
rsa вне форума   Ответить с цитированием
Старый 15.12.2011, 16:53   #50
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
PHP код:
  $sock fsockopen("localhost"3443$errno$errstr);

  if (!
$sock)
  {
    echo(
"$errno($errstr)");
    return 
NULL;
  }
  else
   {
    
stream_set_timeout($sock5);
    
$temp fgets$sock );
    
$temp fread($sock,9);
    
fputs ($sock"admin\r");
    
$temp fread($sock,9);
    
fputs ($sock"password\r");
    
$temp fread($sock,10);
    
fputs($sock".server info\r\n");
    
$temp fread($sock,1024);
    return 
$sock;
   }
}; 
старо аж жуть но пашет.
Интересный подход. Спасибо)
Но всё же, на мой взгляд, мыло работает побыстрее.
В общем опробуем-с
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет
Hantet вне форума   Ответить с цитированием
Старый 10.05.2012, 00:11   #51
odvolk
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от wroud Посмотреть сообщение
так в том то и дело что модуль соап подключен в php
конечно может быть я не внимательно читал тему, но почему-то мне кажется что у него апач с пхп и сервер на разных машинах......ибо если сервер слушает порт, то скрипт должен работать, а не выдавать 401 ошибку авторизации.

Цитата:
Сообщение от tr0yka Посмотреть сообщение
Зачем SOAP? ИМХО лучше сокеты.
мыло быстрее работает и надежнее проверено
  Ответить с цитированием
Старый 11.05.2012, 22:35   #52
Кот ДаWINчи
Умный
 
Аватар для Кот ДаWINчи
 
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
Кот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человек
Отправить сообщение для Кот ДаWINчи с помощью ICQ Отправить сообщение для Кот ДаWINчи с помощью Skype™
По умолчанию

для тех кто хочет поразбираться с отправкой команд через SOAP вот рабочий примерчик:

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="style.css" type="text/css" rel="stylesheet" />
    </head>
    <body>
<form method="POST">
<input type="text" name="cmd" size=60>
<input type="submit" value="SEND"></form><hr>
<?php
function soap_send($command, $username, $password, $host = '127.0.0.1', $soapport = 7878)
    {
    $client = new SoapClient(NULL,
                    array(
                        "location" => "http://$host:$soapport/",
                        "uri" => "urn:MaNGOS",
//                        "uri" => "urn:TC",
                        "style" => SOAP_RPC,
                        'login' => $username,
                        'password' => $password
            ));
    try
        {
        $result = @$client->executeCommand(new SoapParam($command, "command"));
        } catch (Exception $e)
        {
        echo "SOAP Error: " . $e->faultcode . " - " . $e->faultstring;
        $result = FALSE;
        }
    return $result;
    }

if (isset($_POST['cmd'])) {
$command = $_POST['cmd'];
} else {
$command = '';
}
// config !!!
$username = 'ADMINISTRATOR';
$password = 'ADMINISTRATOR';
$host = '127.0.0.1';
//--------
if ($command !== '') {
$q = soap_send($command, $username, $password);
if ($q !== false)
{echo $q;}
echo '<hr>send: ' . $command;
}
?>
    </body>
</html>
Только учтите - скрипт с дырой и без авторизации
Кот ДаWINчи вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
lovepsone (12.05.2012)
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Команды Git'a Max Прочая документация 26 19.08.2012 10:41
Хочу удалить все арена команды ObeDve Новичкам 5 27.12.2010 10:34
Создание внутриигровой команды Houk Новичкам 9 10.08.2010 19:23
[Help] скрипт _PARADOX_ Корзина 3 02.06.2010 18:29
Простой скрипт телепорта Igor321 WWW 1 06.04.2010 11:55


Текущее время: 13:57. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot