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

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

Такие сложные скрипты =) Только зачем? не понятно что-то, я себе сделал проще намного.
Есть скрипт, если на него приходит определенный запрос (с ником и секретным кодом), то он проверяет, совпадает ли код, если да, то проверяет существует ли такой ник в базе, если нет то создает новую запись, если существует то просто апдейтит старую.
Это сложный скрипт?) Его писать 10 минут максимум)
 
по скрипту - ты вообще не юзаешь PDO. читай про него в гугле. потому и не пашит.
 
Установил 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!');
}
 
Вообще не то)
Кароче, я завтра (уже сегодня) допилю скриптик.
Блиииин. Стараюсь-стараюсь а все как всегда(

Вроде бы составил все правильно(
В любом случаи спасибо и за скрипт и за помощь
 
Большое спасибо. Сейчас же попробую.

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

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

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

Я пытаюсь так постучатся - не выходит:
Сайт/mctop.php?security-code=Самкод&player=Никигрока
надо md5 сгенерить вида md5('ИгрокСекретныйКод')
 
md5($config['security-code'] . $_GET['player'])

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

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

?
 
Странно, дальше : *Не ломайте* не идет.

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

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

Я Балбес. Разобрался. Большое спасибо. Теперь хоть смогу нормально тестить что бы в БД залетал ник и значения.
 
Странно, дальше : *Не ломайте* не идет.

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

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

Я Балбес. Разобрался. Большое спасибо. Теперь хоть смогу нормально тестить что бы в БД залетал ник и значения.
Я обычно по другому делаю, проверку на МД5 код проверяю, и тест делаю) а потом когда все заработает добавляю обратно проверку)
 

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

Назад
Верх