Приветствую Вас Гость
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Главная страница
  • Форум (Новoe на форуме)
  • Быстрый старт
  • Блог
  • Видео уроки
  • Каталог файлов
  • Статьи и уроки
  • Юзербары
  • FAQ
  • Обратная связь
  • Для начинающих [9]
    Заморочки [4]
    Для немного понимающих 39длл [9]
    Сложный уровень [4]

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    [ Кто нас сегодня посетил ]
    Главная » Статьи » Статьи » Сложный уровень

    Использование базы данных MySQL
    "Вообще, зачем эти базы данных нужны?" - спросите вы. Да они просто необходимы в крупных и средних проектах! В них можно хранить логины, пароли, данные игроков. Также параметры игры, такие как ip адрес сервера, название карт и т.д. и т.п. В общем, полезная штука. И этой полезной штукой я научу вас пользоваться. Рассмотрим пример регистрации и авторизации пользователя.
    Для этого нам понадобится:
    • Game Maker
    • GmMySQL.dll *
    • Проект Game Maker с загруженными туда скриптами *
    • Хостинг с поддержкой MySQL**
    • А так же ваше терпение :^)
    * - ссылка на скачивание в самом низу статьи
    ** - с этим посложнее. Бесплатные хостинги, которые предоставляют вам MySQL, в большинстве своем ограничивают круг пользователей БД вами. Другими словами, к вам никто не сможет подсоединиться кроме вас (это информация не проверена, т.е. это предположение). Я держу MySQL на платном (60 руб/месяц) хостинге http://best-hoster.ru/ и все отлично работает.


    Нужно в "Удаленном MySQL" прописать с какого ip или домена можно подключаться к MySQL. Чтобы разрешить всем адресам подключатся к MySQL надо написать "%". Romixal


    Запускаем mysql.gmk
    1) Создаем объект o_system и в событии "Create” пишем:

    MySQL_Init(); // Инициализируем dll
    db = MySQL_Create();  // Создаем соединение
    user_name = 'errorg_test';
    user_password = 'd16hg5';
    host = 'error-games.ru'
    host_db = 'errorg_db';
    // user_name - имя пользователя, которого вы создали у себя на хостинге.
    // password - пароль, который вы указали при создании пользователя
    // host - ip адрес вашего сайта или просто адрес сайта
    // 3306 - порт для соединения (ни в коем случае не менять!)
    // host_db - имя базы данных, которую вы создали у себя на хостинге
    MySQL_SetAuth(db, user_name, user_password); // Авторизируемся в БД
    result = MySQL_Connect (db, host, 3306, host_db); // Соединяемся с БД

    if (result = 1)
    {
        show_message('Вы подключились к БД');
    }
    else
    {
        show_message('Невозможно подключиться к БД#' + string(MySQL_ErrorString(db)));
        // MySQL_ErrorString - показывает текущую ошибку.
        game_end();
    }

    В событии нажатия клавиши "1":

    login = string_lower(get_string('Введите имя пользователя:',''));
    pass = string_lower(get_string('Введите пароль:', ''));
    sc_registration(db, login, pass, 'user');


    В событии нажатия клавиши "2":

    login = string_lower(get_string('Введите логин:',''));
    pass = string_lower(get_string('Введите пароль:',''));     
    sc_authorization(db, 'user', 'name', login, pass);
    // 'user' - имя таблицы, с которой мы будем работать
    // 'name' - по какому столбцу будем искать


    2) Создаем скрипт "sc_registration”:

    var str, result, _id, login_2;
    str = 'SELECT * FROM ' + argument3 + ' WHERE name = "' + argument1 +'"';
    // SELECT — оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию. (Википедия)
    // * - ищем по всей таблице
    // WHERE — оператор в SQL указывающий, что оператор языка управления данными должен действовать только на записи, удовлетворяющие определенным критериям. (Википедия)
    MySQL_Query(argument0, str); // создаем запрос
    result = MySQL_ResultStore (argument0); // считываем результаты
    _id = MySQL_RowFetch (result); // записываем номер строки во временную переменную
    login_2 = MySQL_RowGetField (_id, 0); // записываем логин во временную переменную
    MySQL_ResultFree (result); // заканчиваем работу
    str = 'INSERT INTO ' + argument3 + ' VALUES ("' + argument1 + '","' + argument2 + '");';
    if (login_2 = argument1)
    {
        show_message('Пользователь с таким логином уже существует!');
        exit;
    }
    else
    {
        MySQL_Query(argument0, str); // Добавляем запись в БД
        show_message('Вы успешно зарегистрировались!');
    }

    3) Создаем скрипт "sc_authorization”:

    var str, result, _id, pass_2;
    str = 'SELECT * FROM ' + argument1 + ' WHERE ' + argument2 + ' = "' + argument3 +'"';
    // SELECT — оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию. (Википедия)
    // * - ищем по всей таблице
    // WHERE — оператор в SQL указывающий, что оператор языка управления данными должен действовать только на записи, удовлетворяющие определенным критериям. (Википедия)
    MySQL_Query(argument0, str); // создаем запрос
    result = MySQL_ResultStore (argument0); // считываем результаты
    _id = MySQL_RowFetch (result); // записываем номер строки во временную переменную
    pass_2 = MySQL_RowGetField (_id, 1); // записываем пароль во временную переменную
    if (pass_2 = argument4 and argument4 != '' and argument3 != '') // если пароли совпадают и введенные данные не пусты
    {
        show_message('Авторизация прошла успешно!');
    }
    else
    {
        show_message('Неправильный логин или пароль!');
    }
    MySQL_ResultFree (result); // заканчиваем работу


    Необходимые файлы: MySQL.rar(580.92 Kb)
    Автор: Ерфилов "Фил" Роман
    Категория: Сложный уровень | Добавил: Фил (10.10.2010) | Автор: Ерфилов "Фил" Роман E W
    Просмотров: 1619 | Комментарии: 21 | Теги: mysql | Рейтинг: 5.0/2
    Всего комментариев: 211 2 »
    21  
    Коннект и все дела проходят нормально, но при регистрации - вылетает сообщение что регистрация успешна, но при этом записи в БД не появляется. Так что нужно изменить проверку успешности записи нового юзера, а мне разобраться почему такие дела

    20  
    Автору огромный респект

    18  
    не хочет конектить к БД hmsite.net на в чем может быть проблема?
    код ошибки 10060

    19  
    Это условие соблюдено?
    "Нужно в "Удаленном MySQL" прописать с какого ip или домена можно подключаться к MySQL. Чтобы разрешить всем адресам подключатся к MySQL надо написать "%"."
    И я с бесплатными хостингами дела не имею. Возможно проблема в нем.

    10  
    Надо бы написать описание функций, и подробнее рассказать о формировании запросов.
    Для меня затруднительно второе.

    11  
    А я вообще не смог к своей базе подключиться))) Зря деньги за регистрацию в базе ушли))

    12  
    Жестоко

    13  
    Странно, я тоже из GM не могу подключится.
    Но можно попробовать сделать обращение к php из GM.

    14  
    Я немного разобрался, нужно в "Удаленном MySQL" прописать с какого ip или домена можно подключаться к MySQL. Чтобы разрешить всем адресам подключатся к MySQL надо написать "%".

    16  
    Блин, забыл про эту бороду сказать

    15  
    Ок, напишу что-нибудь

    17  
    Можно заюзать вот это

    9  
    "Можно ли без аргументов писать отправку данных прямо в скрипте объекта?"
    Да, конечно.

    8  
    Можно ли без аргументов писать отправку данных прямо в скрипте объекта?

    К примеру запись такого типа будет правильной?
    str = 'UPDATE INTO lc (x,y) VALUES ("'+string(tx)+'","'+string(ty)+'") WHERE name="'+string(global.NAME)+'"';
    MySQL_Query(global.db, str); // Добавляем запись в БД


    6  
    А как библиотеки ДЛЛ устанавливать??? В какую папку закидывать и тд, а то я даже длл установить не могу)))

    7  
    Ты бы не торопился)) Сначала нужно на 39длл хотя бы кусок собаки съесть)))

    5  
    Клас!!!

    4  

    3  
    В архиве MySQL.rar есть уже готовый пример
    Короче, если что-то не понятно - пишите сюда

    1-10 11-12
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    -->


    Логин:
    Пароль:

    Хостинг от uCoz