В общем для своей тривиальной задачи я должен получить данные из мускула именно в в визуальном представлении, в виде дампа, который в последствии мне нужно разобрать уже при помощи пхп в привычный вывод. while( $row = mysqli_fetch_array($result, MYSQL_ASSOC) ){ var_export ($row); } такая конструкция соответственно выводит дамп визуально: примерно такого вида... array( 'ID'=>'32', 'name'=>'root', 'email'=>'[email protected]', 'creatime'=>'2014-09-0918:55:49', ) array( 'ID'=>'48', 'name'=>'wsok', 'email'=>'[email protected]', 'creatime'=>'2014-09-2007:20:51', ) array( 'ID'=>'64', 'name'=>'userpw', 'email'=>'[email protected]', 'creatime'=>'2014-09-2301:25:13', ) задача, уже при помощи пхп все это многомерное безобразие обработать неким аналогом функции от мускула mysqli_fetch_array,привычным способом, будто я это делаю в мускуле. while( $row = php_fetch_array($result) ){ echo $row['name']."данные привычным методом" } т.е. я так понимаю придется написать именно в пхп аналог, но не понимаю куда копать, с чего начать разбирать полученные данные из var_export
Скрин с примером работы скрипта: (специально для недалеких людей, которые плюются мол IP 192.168... локальные, скрипт тестировался на локалке, но с точки зрения сервера 192.168.0.32 это внешний IP по которому я обращался к нему с другой машины, а 192.168.0.56 IP клиента который обратился к серверу) [ATTACH] Демо работы скрипта: http://vps.wsok.net/ip.php Как известно для получения IP адреса посетителям используется суперглобальная переменная окружения $_SERVER['REMOTE_ADDR'] Ну, а если требуется вывести IP адрес именно сервера(внешний), где выполняется пхп скрипт? Сразу кто то из вас скажет, так есть же ещё одна суперглобальная переменная окружения! $_SERVER['SERVER_ADDR'] Конечно! Так то оно так, но есть одна проблема, она покажет только локальный IP адрес сервера, обычно это 127.0.0.1, но речь то идет о внешнем его IP по которому к нему и производится доступ пользователей(внешние подключения). К сожалению в PHP нету суперглобальных переменных, которые покажут внешний IP сервера, да их и не может быть по одной простой причине - никогда заранее неизвестно как сконфигурирован сетевой интерфейс, там может быть целый набор IP адресов, включая и IPv6, но нам ведь нужно получить конкретный IP - именно тот, который используется для внешней связи. Вот для того, чтоб выдернуть и показать нужный IP адрес и требуется скрипт, в нашем случае есть небольшой пхп пример такого скрипта, в нем мы и будет определять правильный IP адрес. <? echo "Ваш IP: ". $_SERVER['REMOTE_ADDR']."<hr>"; echo "IP этого сервера (используя SERVER_ADDR):". $_SERVER['SERVER_ADDR']."<hr>"; $eth = "eth0"; //используемый сетевой интерфейс сервера (доступные сетевые интерфйсы можно вывести командой ifconfig в консоли управления SSH) $ips = "ip a s $eth | grep \"inet\" | cut -d \"/\" -f 1 | cut -c 10-"; //формируем команду для запроса Ob_start(); passthru ($ips); $ip = ob_get_contents(); //тут сервер вернул нам строчку в которой содержаться его ip адреса. ob_end_clean(); $iip = explode("\n", $ip); //получаем массив данных из переменной $ip //echo $ip; //Если неправильно показывает IP вашего сервера, раскоментируйте эту строчку убрав два слеша "//" в её начале, //после чего обратитесь к скрипту, он покажет список IP адресов разделенных пробелами. Для выбора просто укажите его порядковый номер(ниже читайте) echo "IP этого сервера(Внешний): ".$iip[0]; //отображение IP сервера, массив данных берется из переменной $ip, порядок номеров IP адресов от нуля и выше(по умолчанию 0 в переменной $iip[0]). ?> И так, вот собственно и он, что мы в нем делаем? для начала показываем пользователю его IP адрес, полученный с помощью переменной: $_SERVER['REMOTE_ADDR'] Затем пытаемся получить IP адрес сервера, где и лежит этот скрипт с помощью переменной: $_SERVER['SERVER_ADDR'] И терпим отчасти неудачу, так как ожидали получить внешний IP адрес сервера, а не локальный. Ну и ниже начинаем уже проделывать небольшой трюк, чтоб выдернуть список IP адресов прописанных в сетевом интерфейсе. В результате будет получен массив данных, там может содержаться несколько IP, в скрипте показано, как выбрать нужный. В нашем случае, нужный нам адрес первый в списке, а раз у нас порядок идет с нуля, то соответственно мы его и указываем в переменной, которая в конце скрипта и выводит IP. В скрипте же и показано, как вывести список всех IP для того, чтобы понять, какой же в вашем случае порядковый номер нужного IP сервера. PS: В скрипте используется команда, которая может быть отключена на обычном хостинге, поэтому этот скрипт предназначен для владельцев серверов у которых есть доступ к SSH. Но тем не менее есть альтернативный вариант, пример ниже: Этот скрипт использует для своей работы сторонний сервис 2ip.ru, но не все любят использовать сторонние сервисы, для них вариант выше, но если тот вариант не подходит Вам по ряду причин, то следующий скрипт может быть полезным: Скрипт был взят из интернет источников, но с небольшим дополнением id="d_clip_button" в тег big, так как видимо этот сервис ранее не использовал вложенные директивы в теге big. <? $text = file_get_contents('http://2ip.ru'); preg_match_all('#<big id="d_clip_button">(.+)</big>#iU', $text, $r); $text=$r[1][0]; // echo "Наш IP:".$text; ?> Демо пример: http://vps.wsok.net/2ip.php
Собственно сабж. Шкурка для лаунчера PW, однако по тематике он может подойти почти к любой игре, достаточно сменить постер-картинки в PSD. Кстати комплект PSD проектов я не исключаю возможным дополнить комплектацию на условиях описанных в конце этого поста. Полностью послойный PSD в который так же входит и исходник цветовой-карты данного проекта. При проектировании дизайна главного окна лаунчера было решено немного отойти от шаблонов и привычных кнопок, в итоге появились стилизованные кнопки под: компас (кнопка службы поддержки), монеты(кнопка пополнить счет), чернильница с пером(регистрация), книжные закладки(ссылки на сайт и форум), сургучная печать(кнопка запуска игрового клиента). Разумеется при наведении курсора у них появляется ореол (у стилизованных кнопок) и подсветка(у вкладок и закладок). В связи с отходом от шаблонной схемы была полностью переверстана цветовая карта главного окна. Перефирийных окон верстка цветовой разметки не коснулась, решено было оставить разметку по умолчанию, переверстан был лишь их дизайн. Главный упор верстки был направлен на главное окно, в итоге оно было как видите полностью с нуля создано(имеется ввиду верстка, а не рисование с нуля). Всегда готов выслушать конструктивную критику и предложения, но только в ЛС, но не здесь, где тема создана для реализации товара, откорректирую дизайн данного лаунчера согласно грамотно изложенной критике. Продажа возможна в двух вариантах: 1. Только шкурка, без PSD исходников: Цена 1000 руб. 2. шкурка и PSD проекты от неё: Цена 3000 руб. Так же приму заказы на адаптацию этой шкурки к другим типам лаунчеров. Оформить покупку возможно через мой сайт (через мерчант) [ATTACH] [ATTACH]
Наткнулся на хабре на статью http://habrahabr.ru/post/151795/ в ней меня заинтересовал следующий код для своих целей: function file_force_download($file) { if (file_exists($file)) { // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт // если этого не сделать файл будет читаться в память полностью! if (ob_get_level()) { ob_end_clean(); } // заставляем браузер показать окно сохранения файла header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); // читаем файл и отправляем его пользователю if ($fd = fopen($file, 'rb')) { while (!feof($fd)) { print fread($fd, 1024); } fclose($fd); } exit; } } Код в принципе рабочий, но если не использовать gzip сжатие на сайте, при включенном гзип ob_end_clean(); тут же вываливается в ошибку Код ошибки: ERR_CONTENT_DECODING_FAILED Так вот, задача и собственно вопрос, как заставить работать ob_end_clean именно при ВКЛЮЧЕННОМ гзип сжатии? Гугл оказался несколько скуп на мои запросы...
Довольно часто требуется добавить или удалить часть иконок из клиента. Вручную это делать и долго и неудобно, эту проблему и решит данный инструмент, выполненный в виде скрипта на PHP, предназначенного для выполнения в консоли сервера. [ATTACH] Процесс разрезки иконок клиента(не пугайтесь, что в консоли названия выглядят криво, просто сервер не настроен для отображения азиатских шрифтов) [ATTACH] Результат разрезки, как видно все названия иконок на своих местах. [ATTACH] Работа склейщика иконок... [ATTACH] И его результат. Файл РЕАДМИ с небольшой помощью приложен к скриптам. ЗЫ: все же удалось прикрепить к посту архивчик со скриптами, но пришлось удалить демо-файлы с иконками, надеюсь сами разберетесь что к чему там. Будут вопросы, меня легко найти на моем сайте, но сюда по мере свободного времени тоже буду заглядывать. Актуальная версия 1.1: Немного исправлен скрипт резалки иконок, теперь он быстрее работает. (спасибо за конструктивную критику коллегам =) ) Так же есть данный инструмент, но уже в виде софта. В чем удобство? Само по себе в виде виндовс-софта уже удобное решение, ну и плюс она работает намного быстрее чем пхп версия. Отдельное спасибо Desmond Hume, за то, что он переписал под софт обработчик иконок. Пхп же версия больше рассчитана на любителей встраивать в веб-сервер(в ЛК) некоторые функции, ну и для энтузиастов, которые захотят поглядеть поближе код и доработать.
Попытаюсь объяснить буквально на пальцах, не прибегая к основному фрагменту кода. Есть скрипт, который читает в массив текстовый файл с записями иконок (тот что из клиента пв) и на основе этого должен разрезать файл с иконками на отдельные иконки, т.е. резалка. С использованием GD скрипт отлично выводит весть текстовый файл в массив, прогоняет по циклу и в итоге получаю отдельные иконки. В общем, решил заменить GD на imagemagick и... теперь скрипт срабатывает, но режет только первую иконку в массиве и все... Т.е. как только в цикле выполняется строчка: $image->cropImage($gtxt[0],$gtxt[1],$y,$x); Работа цикла прерывается, обрезается лишь первая иконка. В чем дело? Ведь с использованием GD массив через цикл весь проходит, а вот при imagemagick цикл обрабатывает лишь первый элемент массив и отрубается. Почему использование imagemagick стопорит цикл? Кстати в качестве цикла использую этот метод: foreach($listen as $index => $val) Ну и скриншоты с резкльтатами: GD - как видно массив нормально проходит через цикл [ATTACH] ImageMagick - как только первый объект массива обработан, цикл прерывается... [ATTACH] Довольное странно...
Казалось бы очередной баян про ГМ локацию, однако специфика вопроса такова, что такого решения нигде не видел, но подозреваю, что это вполне возможно. В общем ГМ локацию не нужно закрывать и т.п., но если игрок пытается пересечь некий периметр с целью доступа к той локации, его бы телепортировало сразу например в центр карты. Подозреваю, что должно срабатывать взятие квеста при достижении точки и телепортировать его, однако проблема в том, что обычно таким образом квест можно только сдать, достигнув определенной точки карты или его периметра, но не взять. В моем случае я вижу решение именно чтоб квест телепортирующий игрока в центр карты именно брался при попытке войти в запрещенную зону. --- добавлено: 8 окт 2014 в 17:28 --- Подозреваю, что как то так, однако квест берется лишь при пересечении одной точки к острову, квест не дается если я влетаю на остров с другой стороны. Интересно как весь периметр острова сделать активным для взятия кв? [ATTACH]
Решил выложить свой скрипт по бану игрового чата, персонажей и аккаунтов. Проверял в 1.4.4 и в 1.5.1, работает норм. Правда для бана аккаунта, придется войти своим гм персонажем(1024) в игру, так при бане аккаунта система проверяет в сети ли банящий ГМ. Увы не удалось обойти это. [ATTACH] [ATTACH] Спасибо за консультации по пакетам Алексу, Ёжику и другим =) Скрипт подойдет как для использования в чистом виде, так и для встраивания в ЛК. PS: У Ёжика есть похожий скрипт, но я так и не смог понять формирование его пакетов (первый сегмент байтов сильно отличался от моего), пришлось сделать свою версию скрипта и плюс добавил возможность банить аккаунты (увы, при нахождении указанного ГМа в игре). PSS: Скрипт по разбану игровых аккаунтов можно скачать на моем сайте.
Есть готовое решение выдачи банов через веб интерфейс: Баны: 1. Бан чата. 2. Бан персонажа. 3. Бан игрового аккаунта. Разбан: 1. Игровых аккаунтов Бан чата и персонажа перебивается баном на 1 сек, для разбана аккаунтов написан спец. скрипт. В картинках: [ATTACH] Баним, например аккаунт (в данном случае 1024) [ATTACH] Забанили... смотрим что получилось.. [ATTACH] [ATTACH] по сути выдали перманент аккаунту, но попробуем его разбанить... [ATTACH] пробуем войти в игру тем же аккаунтом... [ATTACH] Как видим бан аккаунта снялся и мы опять можем играть =) Данный веб-инструмент подойдет для модернизации Вашего ЛК, в котором нет таких функций, либо для использования в чистом виде. Баны выдаются как и положено, с линком выхода из игры. Для кого данное предложение актуально, отписываемся тут. Проверено на: 1.4.4 и 1.5.1
Собственно сабж, ловить нужные пакеты научился более менее, но опять же если есть чем инициировать, например из ГМки игрового клиента банишь например и тспдампом на сервере ловишь его и потом в шарке находишь нужный пакет... Но как быть, если инциировать отправку нужного пакета нечем, ведь как известно в ГМке клиента аккаунты можно только банить, а разбан там не предусмотрен из панели. С 1 секундой разумеется не прокатывает разбан аккаунта, отсюда вывод, пакет отличается от пакета на Бан аккаунта. Так вот вопрос на засыпку, каким образом данный пакет выловить? Или может быть кто то просто поделится хекс строчкой данного пакета на разбан аккаунта?
В общем сабж, а название команды указана под авой моей. В общем ищу людей энтузиастов увлеченных в сфере dev направленности, т.е. разработка любых веб-серверных приложений, ПО... Разумеется, авторы своего продукта будут иметь возможность его реализовать. Конечно, сайт проекта развивается не семимильными шагами, так как пока это все же хобби, а не средство заработка, но постепенно функционал расширяю у него. Сейчас просто элементарно нуждаюсь в нормальных людях желающих внести свою лепту в его развитие (наполнение форума, внесение нового функционала в сайт если будет необходимость проекта и т.д.) Что уже сделано мной: 1. Собственно открытие проекта (портал+форум) 2. Написание магазина для проекта (который сейчас как раз и работает на сайте) 3. Система биллинга пользователей подключенная к вебмани мерчанту(со временем думаю добавить платежные системы). 4. Проект уже имеет аттестат продавца в системе вебмани. Во первых не будет лимитов на операции на пополнение баланса в биллинге, во вторых наличие такого аттестата говорит о серьезных намерениях проекта. Что из себя представляет проект? Главным образом ориентирован для разработчиков в нескольких направлениях (веб-дизайн, веб-программирование, программирование и некоторые услуги в этой сфере) и представляет из себя нечто среднее между форумом DEV направленности и торговой площадкой(онлайн-магазин) где проверенные продавцы, которым можно доверять, смогут реализовывать свою продукцию либо на общих основаниях, но уже на форуме. ...................... Ну и принимаю обоснованную критику в техническом аспекте, недоделки указанные вами буду устранять на сайте проекта.
В общем ищу человека, которому он нужен, так как наш проект через 5 дней закроется и данный сервер у нас заберут и он уйдет другим... Но если вам он нужен, я могу сказать компании, чтоб не выставляли его в прайс, а передали на ваш аккаунт в simpace.com тем более таких конфигурации там уже нет: Intel Xeon E3 1245v2 3.4GHz / 3.8GHz Turbo Boost 32GB RAM, 2x2TB SATA, Guaranteed unmetered Traffic, 200Mbps, 1IP*, выбор IPV4 из 12 стран 77 баксов в мес. Кому надо можете забирать себе конфигурацию или через 5 дней его просто выставят в общий прайс.
Все началось с того, что пользователи не могли войти в ЛК, не проходила авторизация. Проанализировав проблему, выяснил, что в директории, которые используются системным разделом сервера невозможно записывать данные. Команда df -h подтвердила, что 20 гб отведенных под раздел rootfs заполнено на 100%, сделал следующее очистил кеш дистрибутивов ОС, перезагрузил сервер. Места освободилось в системном разделе где то на 30%, запись файлов заработала, авторизация проходит удачно, но после запуска сервера, после примерно 20-30 мин. работы отваливается игровая база ./gamedbd, логи gamedbd пустые, хоть другие логи, связанные с чатом например заполняются. До сегодняшнего момента сервер работал исправно, игроки играли, но с момента когда начались проблемы с авторизацией, местом в системном разделе начались проблемы... Сейчас падение этих игровых баз, пока не могу понять, что данному демону не нравится... --- добавлено: 8 сен 2013 в 17:14 --- сейчас попробовал прогнать игровые базы и базы имен через тулзу (инструмент восстановления баз), попробую подождать, если базы опять отвалятся, значит тема актуальна... впрочем я в любом случае ожидаю каких либо конструктивных советов по проблеме.
Увы не нашел подходящей темы, потому тему создам в оффтопе, давайте побудем немного волонтерами и поможем чужому горю! Долгопрудненцам, Москвичам и всем кто сможет сделать перепост у себя, группы, страницы, сообщества и тд, не зависимо от региона, яндекс покажет если ищут!!! 13.08.2013 найдена девочка 5 лет. Зовут КРИСТИНА, ФАМИЛИИ СВОЕЙ НЕ ЗНАЕТ ! СЕЙЧАС ОНА В БОЛЬНИЦЕ,ГОРОД ДОЛГОПРУДНЫЙ. НАЙДЕНА И ПРИВЕДЕНА ПРОХОЖИМИ !СДЕЛАЙТЕ У СЕБЯ ПЕРЕПОСТ !!!НУЖНО НАЙТИ РОДСТВЕННИКОВ !! [ATTACH] Народ, вам зачтется, сделайте перепост на своих проектах, в соц сетях..., маленькая девчужка совсем! Вся информация в отд. полиции Долгопрудного и ли на прямую в больницу, она там одна!
Уважаемые коллеги, разработчики, нужна Ваша помощь. Сам по себе пхп я достаточно неплохо знаю, но вот методы работы с сокетами и пакетами мало представляю, мануалы мало информации дают. интересует конкретно как правильно пользоваться снифером, ловить нужный пакет и уже дальше с ним работать в пхп. Например, я пытаюсь поймать пакет при применении действия, бан аккаунта... Забанил сам себя, снифер сразу показал две серые строчки после этого (скрин) Я ищу пакет, который именно отсылал информация для бана аккаунта, цель научиться из пхп банить и не менее важно. разбанивать. Помню Алекс как то писал, что для этого и надо нужный пакет отправить, поисками которого я сейчас и занимаюсь, а так как с пакетами я плохо представляю как работать (поиск, работа с ними и т.д.) То и прошу у вас подсказать каким образом это делать, хотя бы на простом примере, поиска пакета БА и разбан БА. [ATTACH] Пытался разобраться на примере Морзовского скрипта, получающего список персов, но понял, что все же надо со знающими пообщаться.
Продолжая тему Botchal`a, хотелось бы несколько расширить полезность приведенного там скрипта, возможно кто то скажет "вот мол открыл Америку!", ну а кому то эта информация окажется полезной... И так! Многим администраторам своих серверов видимо хочется быть всегда в курсе того, что происходит с сервером и при его отказе быстро получать об этом извещение. Как вариант настроить СМС оповещение (хотя у тех, где покупаете сервер часто такую услугу дают и так, но обычно ведется общий мониторинг сервера, а не отдельные его службы, вроде игр), но к сожалению реально бесплатных смс-шлюзов я так и не нашел (сервисы с капчей отправки смс не в счет). Но немного подумав, вспомнил про почтовые сервисы с оповещением по СМС, таковые есть и в МТС, Билайн и других мобильных операторов, а так же есть почтовые сервисы позволяющие уведомлять о новой почте об смс (например на mail.ru). Ну, а так как я абонент МТС, то рассмотрим на примере подключение сервиса с этого мобильного оператора. Что для этого понадобится? 1. Собственно быть абонентом МТС. 2. Иметь доступ в личный кабинет mts.ru 3. Иметь мобильный аппарат конечно =) 4. Сам скрипт. 5. Крон (CRON) планировщик задач на хосте где будет выполнятся скрипт по расписанию. И так, идем в ЛК МТС, заходим там в интернет-помощник, а там выбираем управление услугами, наша цель там, подключить такую услугу: SMS to e-mail/e-mail to SMS [ATTACH] И так, разобрались, подключили услугу? Т.е. Отображается в списке подключенных услуг, как на скрине? если нет, тогда кликаем по ссылке +Подключить новые услуги и там ищем и подключаем такую услугу. Ну я думаю, Вы все же разобрались и подключили её. Пришло время настроить PHP скрипт: <? $to = "[email protected],"; //указываем почтовый адрес от сервиса МТС, с указанием вашего номера телефона. $to .= "[email protected]"; //Дополнительный почтовый адрес, например обычная ваша почта, куда будет дублироваться уведомление, либо для подстраховки другой сервис СМС оповещения через емайл. $datez = date("Y-m-d G:i:s"); //Время отправки уведомления $subject ='=?utf-8?B?'. base64_encode ("SERVER PW OFF").'?='; $m = $datez." SERVER PW OFF"; $headers = "MIME-Version: 1.0 \r\n"; $headers .= "Content-type: text/html; charset='utf-8' \r\n"; $headers .= "From: [email protected]\r\n"; //Вписываем адрес отправителя, раз уж от лица сервера, то имя почты можно задать [email protected] $ip1="demo.ru"; //хост сервера IP или домен, например demo.ru $port1="29000"; // Порт проверяемой службы, например 29000, т.е. проверяем статус игрового сервера PW. $fp = @fsockopen($ip1, $port1, $errno, $errstr, 1); //коннектимся и получаем денные if(!$fp) mail($to, $subject, $m, $headers); //если ничего не получили, отсылаем оповещение. ?> все, можем считать, что скрипт настроен, и залит на хост. Кстати, рекомендую конечно чекать(проверять) статус сервера с другого хоста, а не с самого сервера где установлен ваш игровой сервер, ведь если вдруг будут траблы с самим физическим сервером, то и оповещения не получите. Сейчас практически любой хостинг, даже самый недорогой поддерживает крон, оттуда можно и чекать. Приступим к настройке задания крона, я это делал в отдельном хосте через ISPmanager [ATTACH] Установим например 5 минут, т.е. каждые 5 минут крон будет обращаться к скрипту, а тот в свою очередь и будет делать проверку и отсылать оповещение при необходимости. Конечно, способ команды обращения к скрипту можете сделать и по другому, но я решил обратится к нему через wget. Все, оповещение настроено! Можете конечно проверить работу, указав в скрипте порт, который заведомо не используется ничем, соответственно и ответа скрипт с него не получит, зато Вы получите оповещение. PS: Как я уже говорил, есть немало сервисов по оповещению на СМС, через емайл. На mail.ru например можно завести специальный ящик для таких уведомлений на смс.
В общем, суть проблемы в том, что хеши md5 не хотят совпадать, хоть тресни... Хоть и все настроено как положено... Форма запроса платежа как и положено отправляет данные... $output .= "<div class=w1 align=center>Пополнение баланса <img src='' border=0> <div class=multiple3> <form method='POST' action='https://merchant.webmoney.ru/lmi/payment.asp'> <input style=\"width: 15%; height: 35px; font-size:20px;\" type='text' name='LMI_PAYMENT_AMOUNT' value=''> <input type='hidden' name='LMI_PAYMENT_DESC_BASE64' value='".base64_encode("Пополнение баланса для ".$mkportals->member['name'])."'> <input type='hidden' name='LMI_PAYMENT_NO' value='{$mkportals->member['id']}'> <input type='hidden' name='LMI_PAYEE_PURSE' value='R850275512100'>"; $output .= "</select><input style=\"width: 20%; height: 35px; font-size:20px;\" type=submit value='Пополнить'> </form></div></div>"; Все данные проходят и успешно оплата производится (с кошелька покупателя списывается, продавцу зачисляется), но вот хеши не совпадают. Собственно использую такой код для результ обработчика: <?php //кошелек на который будут перечислены средства $wm_purce = "R850275512100"; if( isset($_POST['LMI_PREREQUEST']) && $_POST['LMI_PREREQUEST'] == 1) { $sql = "SELECT id,price FROM orders WHERE id=".$_POST['LMI_PAYMENT_NO']; $result = mysql_query($sql); $rows = mysql_num_rows($result); if ( $rows != 1 ) { exit('Order not faund'); } else { $row = mysql_fetch_array($result); if($_POST['LMI_PAYMENT_NO'] == $row['id'] && $_POST['LMI_PAYEE_PURSE'] == $wm_purce && $_POST['LMI_PAYMENT_AMOUNT'] == $row['price']) { echo 'YES'; } else { exit(); } } } else { $LMI_SECRET_KEY = "Тут мой секретный ключ, идентичный тому что установил в настройках кошелька"; $sql = "SELECT id,price FROM orders WHERE id=".$_POST['LMI_PAYMENT_NO']; $result = mysql_query($sql); $rows = mysql_num_rows($result); if ( $rows != 1 ) { exit('Order not faund'); } else { $row = mysql_fetch_array($result); $str_hash = $wm_purce. $row['price']. $row['id']. $_POST['LMI_MODE']. $_POST['LMI_SYS_INVS_NO']. $_POST['LMI_SYS_TRANS_NO']. $_POST['LMI_SYS_TRANS_DATE']. $LMI_SECRET_KEY. $_POST['LMI_PAYER_PURSE']. $_POST['LMI_PAYER_WM']; $str_hash = strtoupper(md5($str_hash)); if($str_hash == $_POST['LMI_HASH']) { //обновляем статус заказа - оплачен и //отправляем пользователю письмо о том что его оплата прошла. } else { exit(); } } } ?> Решил в код добавить запись в файл, чтобы понять, что действительно хеши разные $str_hash = $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].$_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].$_POST['LMI_SYS_TRANS_DATE'].$LMI_SECRET_KEY.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM']; $str_hash = strtoupper(md5($str_hash)); $fp = fopen("t.txt", "a"); $mytext = $str_hash." - ".$_POST['LMI_HASH']."\r\n"; fwrite($fp, $mytext); fclose($fp); if($str_hash == $_POST['LMI_HASH']) { //обновляем статус заказа - оплачен и //отправляем пользователю письмо о том что его оплата прошла. } как видно из кода, весь порядок генерации хеша мною соблюден, но хеши получаются разные, это видно из файла Слева от дефиса хеш сгенерирован согласно тому порядку, что взят из официального источника, слева хеш, который присылает система, и как видно он совсем другой. В чем дело? F815E4EBB45A559431983B4E9DA1F60F - F38F2CFEC237D2E5C4CEE4B4A6E116C1 5298C17D649459D7310CDC3A7AE2E34A - 8917A7F68F92042C5163CF2B24258A49 398643F6AA5DCDB5428C3E5A8D3F16F0 - 4BC6C192CEAE2E3188C170DE0A5DEA98 197FA3A4061B44FA67268387ADB21FBC - 437169ED3EE0BB1BBB83A0AE4FB60E2F 183674E7ECB524C4B1420B6EEB69739F - 87572CF7BF952F383EF31669F63BF074 9393573DEAD6C63AD1B2FCB563BE8D32 - 898EC43A5857E35A626E7767058A2592
В общем был сделан бекап мускула и игровых баз, но по случайности не был сделан бекап uniquenamed, теперь он утрачен и остались лишь игровые базы и мускул, конечно запуску сервера это не помешает, но будут проблемы при создании новых персонажей, отсюда вопрос, можно ли как то с нуля восстановить uniquenamed имея на руках только основные игровые базы и мускул?
Как то гуглил, давно и что то такое находил, но значения мало придал той информации, теперь решил проверить в действии, но тот гайд увы не могу уже нагуглить. В общем нужна помощь по сабжу, конвертировать(экспортировать) игровые базы с 1.4.4 на 1.4.5 или выше. Подскажите действия или тыкните носом в ссылку, где есть информация по конвертации игровых баз пв. Есть функция convertdb, она ли это делает? Если да, можете подсказать пример её использования? В общем прошу поделиться информацией по сабжу.
В общем приспичило меня сделать новый трактат. Решил сделать на основе трактата Тысячи лет, собственно его и клонировал, кроме ID больше ничего не менял, решил проверить как выглядит клонированный трактат. Запустил сервер, выбил из заранее сделанного тестового моба этот клонированный Тысячи лет... Сразу обнаружил, что на нем кроме названия и цены больше ничего нет, т.е. информации о бонусах нету, но при одевании видно, что бонусы прибавляются... Отсюда вопрос, как же в клонированном трактате прописать бонусы, чтоб они визуально отображались в нем?
Имена участников (разделяйте запятой).