?? sasql.c
字號:
#define _SASQL_C_#include "version.h"#ifdef _SASQL1//新添加#include "main.h"#include "util.h"#include "mail.h"#include "db.h"#include "saacproto_util.h"#include "saacproto_serv.h"#ifdef _UNIVERSE_CHATROOM#include "chatroom.h"#endif// CoolFish: Family 2001/5/9#include "acfamily.h"#ifdef _DEATH_CONTEND#include "deathcontend.h"#endif#include <signal.h>#include <sys/types.h>#include <time.h>#include <sys/time.h>#include <errno.h>#include <sys/wait.h>#include <getopt.h>#include <stdio.h>#include <malloc.h>#include <strings.h>#include <string.h>#include <unistd.h>#include <netdb.h>#include <errno.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <fcntl.h>#include <netinet/tcp.h>#include "saacproto_work.h"#ifdef _OACSTRUCT_TCP#include "saacproto_oac.h"#endif#ifdef _PAUCTION_MAN#include "auction.h"#endif#include "lock.h"#define BACKLOGNUM 5#ifdef _FIX_WORKS#include "saacproto_work.h"int worksockfd;#endif#ifdef _LOCK_SERVER#include "saacproto_lserver.h"#endif#ifdef _SEND_EFFECT // WON ADD 送下雪、下雨等特效 #include "recv.h"#endif#include "defend.h"#include "char.h"#include <mysql/mysql.h>#define BOOL int#define FALSE 0#define TRUE 1MYSQL mysql;MYSQL_RES *mysql_result;MYSQL_ROW mysql_row;typedef struct tagConfig{ char sql_IP[16]; int sql_Port; char sql_Port1[16]; char sql_ID[16]; char sql_PS[16]; char sql_DataBase[16]; char sql_Table[16]; char sql_Name[16]; char sql_PassWord[16]; char sql_RegTime[16]; char sql_LoginTime[16]; char sql_Path[10]; char sql_OnlineName[16]; }Config;Config config;int AutoReg;static int readConfig( char *path ){ char buf[2048]; FILE *fp; fp = fopen( path , "r" ); if( fp == NULL ){ return -2; } while( fgets( buf , sizeof( buf ) , fp )){ char command[1024]; char param[2048]; chop(buf); easyGetTokenFromString( buf , 1 , command , sizeof( command )); easyGetTokenFromString( buf , 2 , param , sizeof( param )); if( strcmp( command , "sql_IP" ) == 0 ){ strcmp( config.sql_IP , param ) ; snprintf( config.sql_IP , sizeof( config.sql_IP) , param ); log("\n數據庫地址: %s",config.sql_IP); } else if( strcmp( command , "sql_Port" ) == 0 ){ config.sql_Port = atoi( param ); snprintf( config.sql_Port1 , sizeof( config.sql_Port1) , param ); log("\n數據庫端口: %d",config.sql_Port); } else if( strcmp( command , "sql_ID" ) == 0 ){ strcmp( config.sql_ID , param ) ; snprintf( config.sql_ID , sizeof( config.sql_ID) , param ); log("\n數據庫用戶: %s",config.sql_ID); } else if( strcmp( command , "sql_PS" ) == 0 ){ strcmp( config.sql_PS , param ) ; snprintf( config.sql_PS , sizeof( config.sql_PS) , param ); log("\n數據庫密碼: %s",config.sql_PS); } else if( strcmp( command , "sql_DataBase" ) == 0 ){ strcmp( config.sql_DataBase , param ) ; snprintf( config.sql_DataBase , sizeof( config.sql_DataBase) , param ); log("\n登陸數據庫名:%s",config.sql_DataBase); } else if( strcmp( command , "sql_Table" ) == 0 ){ strcmp( config.sql_Table , param ) ; snprintf( config.sql_Table , sizeof( config.sql_Table) , param ); log("\n數據庫表名: %s",config.sql_Table); } else if( strcmp( command , "sql_Name" ) == 0 ){ strcmp( config.sql_Name , param ) ; snprintf( config.sql_Name , sizeof( config.sql_Name) , param ); log("\n用戶名字段: %s",config.sql_Name); } else if( strcmp( command , "sql_PassWord" ) == 0 ){ strcmp( config.sql_PassWord , param ) ; snprintf( config.sql_PassWord , sizeof( config.sql_PassWord) , param ); log("\n密碼字段: %s",config.sql_PassWord); } else if( strcmp( command , "sql_RegTime" ) == 0 ){ strcmp( config.sql_RegTime , param ) ; snprintf( config.sql_RegTime , sizeof( config.sql_RegTime) , param ); log("\n注冊時間: %s",config.sql_RegTime); } else if( strcmp( command , "sql_LoginTime" ) == 0 ){ strcmp( config.sql_LoginTime , param ) ; snprintf( config.sql_LoginTime , sizeof( config.sql_LoginTime) , param ); log("\n登陸時間: %s",config.sql_LoginTime); } else if( strcmp( command , "sql_Path" ) == 0 ){ strcmp( config.sql_Path , param ) ; snprintf( config.sql_Path , sizeof( config.sql_Path) , param ); log("\n路徑字段: %s",config.sql_Path); } else if( strcmp( command , "sql_OnlineName" ) == 0 ){ strcmp( config.sql_OnlineName , param ) ; snprintf( config.sql_OnlineName , sizeof( config.sql_OnlineName) , param ); log("\n在線玩家字段:%s",config.sql_OnlineName); } else if( strcmp( command , "AutoReg" ) == 0 ){ AutoReg = atoi( param ); log("\n開放自動注冊:%d",AutoReg); fclose(fp); return 0; } }}BOOL sasql_init( void ){ if( mysql_init(&mysql) == NULL & readConfig("acserv.cf")){ log("\n數據庫初始化失敗!"); exit(1); return FALSE;} if( !mysql_real_connect( &mysql, config.sql_IP, config.sql_ID,//帳號 config.sql_PS,//密碼 config.sql_DataBase,//選擇的資料庫 config.sql_Port, NULL, 0 ) ) { log("\n更新數據庫失敗!\n"); return FALSE; } log("\n數據庫連接成功!\n");#ifdef _SQL_BACKGROUND if(!sasql_initonline()) log("\n數據庫初始化失敗!\n");#endif return TRUE;}void sasql_close( void ){ mysql_close( &mysql );}BOOL sasql_query(char *nm, char *pas){ char sqlstr[256]; sprintf(sqlstr,"select * from %s where %s=BINARY'%s' and %s=BINARY'%s'",config.sql_Table,config.sql_Name,nm,config.sql_PassWord,pas); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); mysql_free_result(mysql_result); if(num_row==1){ return TRUE;} else{ return FALSE;}} else{ log("\n 數據庫查找失敗!\n"); return FALSE;}}#ifdef _SQL_BACKGROUNDBOOL sasql_update(char *nm, char *path){ char sqlstr[256]; sprintf(sqlstr,"update %s set %s='%s' where %s=BINARY'%s'",config.sql_Table,config.sql_Path,path,config.sql_Name,nm); if(!mysql_query(&mysql,sqlstr)){ return TRUE;} else{ log("\n更新數據庫失敗!\n"); return FALSE;}}BOOL sasql_online(char *nm,char *lnm){ char sqlstr[256]; sprintf(sqlstr,"update %s set %s='%s',%s=NOW() where %s=BINARY'%s'",config.sql_Table,config.sql_OnlineName,lnm,config.sql_LoginTime,config.sql_Name,nm); if(!mysql_query(&mysql,sqlstr)){ return TRUE;} else{ log("\n更新數據庫失敗!\n"); return FALSE;}}BOOL sasql_initonline(){ char sqlstr[256]; sprintf(sqlstr,"update %s set %s=NULL",config.sql_Table,config.sql_OnlineName); if(!mysql_query(&mysql,sqlstr)){ return TRUE;} else{ return FALSE;}}#endif#ifdef _SQL_REGISTERBOOL sasql_register(char *nm, char *pas){ char sqlstr[256]; if(AutoReg==1) { sprintf(sqlstr,"select * from %s where %s=BINARY'%s'",config.sql_Table,config.sql_Name,nm); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); mysql_free_result(mysql_result); if(num_row==0){ sprintf(sqlstr,"INSERT INTO %s (%s,%s,%s) VALUES ('%s','%s',NOW())",config.sql_Table,config.sql_Name,config.sql_PassWord,config.sql_RegTime,nm,pas); if(!mysql_query(&mysql,sqlstr)){ log("\n新用戶注冊成功!\n"); return TRUE;} else{ log("\n新用戶注冊失敗!\n"); return FALSE;}} else{ return FALSE;}} else{ log("\n 數據庫查找失敗!\n"); return FALSE;} } else{ return FALSE;}}#endif#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -