OKStyle
Эксперт
Данная инструкция является дополнением к этому уроку. Здесь я расскажу, как спрятать данные для подключения к вашей базе данных на хостинге от посторонних глаз. Предполагается, что вы уже настроили и подключили MySQL к своему моду, поэтому буду продолжать.
1. Для начала создадим этот конфигурационный файл. Заходим в папку scriptfiles вашего сервера, создаём текстовый документ, вписываем реквизиты базы данных:
Выбираем "Сохранить как", тип файлов "Все файлы", имя: mysql.cfg.
2. Далее нужно записать чтение файла при старте мода. В OnGameModeInit пишем:
3. Мы записали данные подключения из файла в созданные строковые параметры. Теперь подключимся к базе данных с помощью них.
Вот и всё. Таким же способом можете сделать подключение базы (чтение параметров) из файла, размещённого на каком-либо сайте (с помощью инклюда http).
P.S. Ниже я размещу полный код для корректной работы мода даже в случае отсутствия конфигурационного файла. Например, если нет конфига для сервера - подключаемся к пустой базе или дампу.
Автор: OKStyle
1. Для начала создадим этот конфигурационный файл. Заходим в папку scriptfiles вашего сервера, создаём текстовый документ, вписываем реквизиты базы данных:
PHP:
localhost
weiland
root
2. Далее нужно записать чтение файла при старте мода. В OnGameModeInit пишем:
PHP:
new File:dbcfg = fopen("mysql.cfg", io_read);
if(dbcfg == File:0) return printf("Не удалось открыть файл!"); // Если не найден файл конфигурации в scriptfiles
new buffer[128], linenum = 1, sql_adress[16], sql_login[16], sql_password[16], sql_base[16];
while((fread(dbcfg, buffer)) != 0)
{
switch(linenum)
{
case 1: strmid(sql_adress, buffer, 0, strlen(buffer) - 2);
case 2: strmid(sql_base, buffer, 0, strlen(buffer) - 2);
case 3: strmid(sql_login, buffer, 0, strlen(buffer) - 2);
case 4: strmid(sql_password, buffer, 0, strlen(buffer));
}
linenum++;
}
fclose(dbcfg);
PHP:
SQL_HANDLE = mysql_connect(sql_adress, sql_login, sql_password, sql_base);
mysql_log();
if(!mysql_errno()) print(!"Подключение к базе данных MySQL успешно создано!");
else print(!"Невозможно подключиться к базе данных MySQL!");
P.S. Ниже я размещу полный код для корректной работы мода даже в случае отсутствия конфигурационного файла. Например, если нет конфига для сервера - подключаемся к пустой базе или дампу.
PHP:
#define SQL_HOST "localhost"
#define SQL_USER "root"
#define SQL_DB "weiland-clear" // тут имя вашей бд
#define SQL_PASS ""
new MySQL:SQL_HANDLE;
public OnGameModeInit()
{
new File:dbcfg = fopen("mysql.cfg", io_read);
if(dbcfg == File:0)
{
printf("Не удалось открыть конфигурационный файл, подключаемся в другую базу данных."); // если не открылся файл конфигурации в scriptfiles
SQL_HANDLE = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
goto dbconnect; // можете менять условия, я сделал через goto
}
new buffer[128], linenum = 1, sql_adress[16], sql_login[16], sql_password[16], sql_base[16];
while((fread(dbcfg, buffer)) != 0)
{
switch(linenum) // не перепутайте очередность данных в файле
{
case 1: strmid(sql_adress, buffer, 0, strlen(buffer) - 2);
case 2: strmid(sql_base, buffer, 0, strlen(buffer) - 2);
case 3: strmid(sql_login, buffer, 0, strlen(buffer) - 2);
case 4: strmid(sql_password, buffer, 0, strlen(buffer) - 2);
}
linenum++;
}
fclose(dbcfg);
SQL_HANDLE = mysql_connect(sql_adress, sql_login, sql_password, sql_base); // подключаемся с данными из файлов
dbconnect:
mysql_log();
if(!mysql_errno()) print(!"Подключение к базе данных MySQL успешно создано!");
else print(!"Невозможно подключиться к базе данных MySQL!");
return 1;
}
Автор: OKStyle
