Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Include mysql_settings.inc | настройка подключения к бд

Untonyst

Умник
mysql_settings.inc
загрузка данных из файла​

Описание:
Здравствуйте, уважаемые пользователи. На одном форуме был вопрос по загрузке данных из файла для использования их как данные для подключения к базе данных. Наверняка это не первый и не последний вопрос на эту тему, да кому-нибудь может тоже станет интересна эта тема. Итак, суть проста. У нас есть файл mysql_settings.txt и в нем перечислены данные (имя, пароль, бд и хост), при запуске мода данные считываются от туда. Огромный плюс этого метода в том, что данные можно изменять не перекомпилиируя свой скрипт.​

К сведению: для работы нужен sscanf2.inc, надеюсь, в гугле или в яндексе вы не заблокированы.

PHP:
/*

	Загрузка данных из '../scriptfiles/mysql_settings.txt' для подключения с базой данных
	
	Пример содержимого файла mysql_settings.txt:
	
		localhost,tensa,123qwe,base
		хост, имя пользователя, пароль, имя базы данных
		
	Аля большой костыль!

	(C) Copyright 2015, Untonyst =3
	
*/

// если нет инклуда a_mysql.inc, то исключим НАШ инклуд на стадии компиляции
#if !defined mysql_included
	//#error File a_mysql.inc is not included
	#endinput
#endif

// если нет инклуда sscanf2.inc, то исключим НАШ инклуд на стадии компиляции
#if !defined sscanf
	//#error File sscanf2.inc is not included
	#endinput
#endif

// настройки подключения по умолчанию, если файла настроек не обнаружено
#define DEFAUL_MYSQL_HOST "127.0.0.1"
#define DEFAUL_MYSQL_USER "root"
#define DEFAUL_MYSQL_PASSWORD "" 
#define DEFAUL_MYSQL_DATABASE "base"

// id подключения
new cHandle;

public OnGameModeInit()
// подключение соединения с базой данных при старте сервера
{
	new File:file_handle = fopen("mysql_settings.txt", io_read), buf[20*4+1], mysql_host[20], mysql_user[20], mysql_password[20], mysql_database[20];
	
	if (!fexist("mysql_settings.txt"))
	// если файла настроек нет, то используем данные по умолчанию
	{
		mysql_host = DEFAUL_MYSQL_HOST;
		mysql_user = DEFAUL_MYSQL_USER;
		mysql_password = DEFAUL_MYSQL_PASSWORD;
		mysql_database = DEFAUL_MYSQL_DATABASE;
	}
	else
	{
		fread(file_handle, buf);
		sscanf(buf, "p<,>s[20]s[20]s[20]s[20]", mysql_host, mysql_user, mysql_password, mysql_database);
		fclose(file_handle);
		// это так, для сведения
		printf("===============\nХост: %s\nПользователь: %s\nПароль: %s\nБД: %s\n===============\n\n",mysql_host, mysql_user, mysql_password, mysql_database);
	}
	
	cHandle = mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
	
	if(mysql_errno())
		print("[MySQL] Связь с базой данных не установлена\n* Проверьте введенные вами данные\n\n");
	else
		print("[MySQL]  Связь с базой данных установлена\n\n");
	
#if defined MySQL__OnGameModeInit
	MySQL__OnGameModeInit();
	return 1;
#endif
}

#if defined _ALS_OnGameModeInit
	#undef OnGameModeInit
#else
	#define _ALS_OnGameModeInit
#endif

#define OnGameModeInit MySQL__OnGameModeInit

#if defined MySQL__OnGameModeInit
forward MySQL__OnGameModeInit();
#endif

public OnGameModeExit()
// отключение соединения с базой данных при рестарте сервера
{
	mysql_close(cHandle);
	print("[MySQL] Связь с базой данных была отключена\nИдет подключение ...\n\n");
#if defined MySQL__OnGameModeExit
	MySQL__OnGameModeExit();
	return 1;
#endif
}

#if defined _ALS_OnGameModeExit
	#undef OnGameModeExit
#else
	#define _ALS_OnGameModeExit
#endif

#define OnGameModeExit MySQL__OnGameModeExit

#if defined MySQL__OnGameModeExit
forward MySQL__OnGameModeExit();
#endif
 
Сверху Снизу