Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  2. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб MCTOP PHP бонусы - продвинутое решение

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем Alex_Bond, 9 фев 2013.

  1. Автор темы
    Alex_Bond

    Alex_Bond Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    Alex.Bond.d
    Имя в Minecraft:
    Alex_Bond_UA
    Это сложный скрипт?) Его писать 10 минут максимум)
     
    Nightfear нравится это.
  2. Хостинг MineCraft
    <
  3. Автор темы
    Alex_Bond

    Alex_Bond Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    Alex.Bond.d
    Имя в Minecraft:
    Alex_Bond_UA
    по скрипту - ты вообще не юзаешь PDO. читай про него в гугле. потому и не пашит.
     
    Nightfear нравится это.
  4. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    Установил PDO в Mysql через php.ini :
    extension=php_pdo_firebird.dll
    extension=php_pdo.dll
    extension=php_pdo_mysql.dll
    extension=php_pdo_oci.dll
    extension=php_pdo_odbc.dll
    extension=php_pdo_pgsql.dll
    extension=php_pdo_sqlite.dll

    Далее, изменил код на изначальный + новый кейс.
    Код:
    <?php
     
    $config = array(
        'db' => array(
            'driver' => 'mysql',
            'host' => 'sr1.firolab.org.ua',
            'username' => 'rootty',
            'password' => 'ug0.jpg',
            'database' => 'minecraft',
        ),
        'security-code' => 'GkvPzrnA',
        'jobs' => array(
            array(
                'active' => true,
                'table-name' => 'w2v_bonus',
                'type' => 4,
                /*
    * # ДОБАВЛЕНИЕ К ЧИСЛЕННОМУ ЗНАЧЕНИЮ
    * 0 - только обновление (пополнение).
    * 1 - вставка нового параметра если нет такой записи (поле user-column дожно быть уникально в схеме (уникальный индекс)).
    * # ВЫСТАВЛЕНИЕ ЗНАЧЕНИЯ
    * 2 - выставления значения
    * 3 - вставка или выставление значения (поле user-column дожно быть уникально в схеме (уникальный индекс)).
    * 4 - Моя дорисовка. Которая записывает в таблицу w2v_bonus 4 алмаза(id=264) проголосовавшему игроку.
    * */
                'change-column' => 'item_amount',
                'item_amountfromtable' => 'item_amount',
                'item_count' => 4,
                'item_id' => 264,
                'user-column' => 'player',
                'nicknamefromtable' => 'nickname',
                'item_idfromtable' => 'item_id',
               
                'default' => 30, // Стандартный баланс
                'change' => 1 // Бонус или значение
            )
        )
    );
     
    if (isset($_GET['hash']) && isset($_GET['player']) && strlen($_GET['hash']) == 32 && strlen($_GET['player']) >= 3 && $_GET['hash'] == md5($config['security-code'] . $_GET['player'])) {
        try {
      $player=mysql_escape_string($_GET['player']);
      $player=mysql_real_escape_string($player);
            $db = new PDO($config['db']['driver'] . ':host=' . $config['db']['host'] . ';dbname=' . $config['db']['database'], $config['db']['username'], $config['db']['password']);
     
            foreach ($config['jobs'] as $item) {
                if ($item['active'] == true) {
                    switch ($item['type']) {
                        case 0:
                        {
                            $query = $db->prepare("UPDATE " . $item['table-name'] . " SET `" . $item['change-column'] . "`=`" . $item['change-column'] . "`+" . $item['change'] . " WHERE `" . $item['user-column'] . "`=?");
                            $query->execute(array($_GET['player']));
                            break;
                        }
                        case 1:
                        {
                            $query = $db->prepare("INSERT INTO " . $item['table-name'] . " (`" . $item['user-column'] . "`,`" . $item['change-column'] . "`) VALUES (?, " . $item['default'] + $item['change'] . ") ON duplicate KEY UPDATE `" . $item['change-column'] . "`=`" . $item['change-column'] . "`+" . $item['change']);
                            $query->execute(array($_GET['player']));
                            break;
                        }
                        case 2:
                        {
                            $query = $db->prepare("UPDATE " . $item['table-name'] . " SET `" . $item['change-column'] . "`=`? WHERE `" . $item['user-column'] . "`=?");
                            $query->execute(array($item['change'], $_GET['player']));
                            break;
                        }
                        case 3:
                        {
                            $query = $db->prepare("INSERT INTO " . $item['table-name'] . " (`" . $item['user-column'] . "`,`" . $item['change-column'] . "`) VALUES (?, ?) ON duplicate KEY UPDATE `" . $item['change-column'] . "`=?");
                            $query->execute(array($_GET['player'], $item['change'], $item['change']));
                            break;
                            }
                        case 4:
                        {
                        //var_dump($item);
                            $query = $db->prepare("INSERT INTO " . $item['table-name'] . " (`".$item['nicknamefromtable'] . " `,`" . $item['item_idfromtable'] . "`, `" . $item['item_amountfromtable'] . "`) VALUES (`". $item['user-column'] ."`, `". $item['item_id'] ."`, `". $item['change-column'] ."`");
                            $query->execute(array($_GET['player']));
                            break;
     
                        }
                        //Добавил кейс 4. Посмотри плз соответствие в названиях и правильно ли они тут приведены. Спс.
                   
     
                    if ($db->errorCode() != 0000) {
                        $error_array = $db->errorInfo();
                        die("SQL error: " . $error_array[2] . '');
                    }
                }
            }
     
            echo 'ok';
        } catch (PDOException $e) {
            die('Error: ' . $e->getMessage());
        }
    } else {
      die('DO NOT HACK ME!');
    }
     
  5. Автор темы
    Alex_Bond

    Alex_Bond Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    Alex.Bond.d
    Имя в Minecraft:
    Alex_Bond_UA
    Вообще не то)
    Кароче, я завтра (уже сегодня) допилю скриптик.
     
    DavidShabaev и Nightfear нравится это.
  6. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    Блиииин. Стараюсь-стараюсь а все как всегда(

    Вроде бы составил все правильно(
    В любом случаи спасибо и за скрипт и за помощь
     
  7. Loger

    Loger Активный участник Пользователь

    Баллы:
    88
    Skype:
    trofimov1995trofimov
    Ну просто у меня реализовано проще :) А кстати почитал про PDO интересная штука в общем то
     
    Nightfear нравится это.
  8. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    Мне интерестно что я не так делал)
     
    ВремяПриключений нравится это.
  9. Lancelot

    Lancelot Старожил Пользователь

    Баллы:
    123
    Skype:
    lancelool
    Имя в Minecraft:
    Lancelool
    Документация бы не помешала :)
     
  10. Автор темы
    Alex_Bond

    Alex_Bond Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    Alex.Bond.d
    Имя в Minecraft:
    Alex_Bond_UA
  11. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    Большое спасибо. Сейчас же попробую.

    Слу, а ты не знаешь как обращатся к файлу mstop.php скриптом, что бы не голосовать?

    Я пытаюсь так постучатся - не выходит:
    Сайт/mctop.php?security-code=Самкод&player=Никигрока
     
  12. Автор темы
    Alex_Bond

    Alex_Bond Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    Alex.Bond.d
    Имя в Minecraft:
    Alex_Bond_UA
    надо md5 сгенерить вида md5('ИгрокСекретныйКод')
     
    Nightfear нравится это.
  13. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    Ухты, а этого я уже делать и не умею(
    Самое обидное, если это будет что-то типо
    mctop.php?md5(nickSecretPass)
     
  14. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    md5($config['security-code'] . $_GET['player'])

    Я так понял, что это будет где-то так?:

    сайт.ru/mctop.php?md5(1235Nickname)

    ?
     
  15. Автор темы
    Alex_Bond

    Alex_Bond Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    Alex.Bond.d
    Имя в Minecraft:
    Alex_Bond_UA
    http://md5x.ru/ вот тут сгенерируй.
     
    Оригинало_о и Nightfear нравится это.
  16. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    так, а потом куда кидать md5 код?

    mctop.php?md5=code?
     
  17. Автор темы
    Alex_Bond

    Alex_Bond Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    Alex.Bond.d
    Имя в Minecraft:
    Alex_Bond_UA
    mctop.php?hash=твой код&player=имя игрока
     
    Nightfear нравится это.
  18. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    Спасибо. Сейчас попробую. Извини что мучаю тебя. Не когда еще таким не занимался.
    З.Ы. начинающий.
     
  19. Nightfear

    Nightfear Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    nightfear
    Странно, дальше : *Не ломайте* не идет.

    Попробую составить схему которую я понял:
    http://md5x.ru/ -> Вкидываем md5('ИгрокСекретныйКод') -> получаем код.
    Обращаемся к файлу http://cайт/mctop.php?hash=КОД&player=Игрок.

    Все правильно понял?

    Я Балбес. Разобрался. Большое спасибо. Теперь хоть смогу нормально тестить что бы в БД залетал ник и значения.
     
    slavik123123123 нравится это.
  20. Loger

    Loger Активный участник Пользователь

    Баллы:
    88
    Skype:
    trofimov1995trofimov
    Я обычно по другому делаю, проверку на МД5 код проверяю, и тест делаю) а потом когда все заработает добавляю обратно проверку)
     

Поделиться этой страницей