Changes in server/DataAccess.cpp [60017fc:41ad8ed] in network-game
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
server/DataAccess.cpp
r60017fc r41ad8ed 3 3 #include <iostream> 4 4 #include <sstream> 5 #include <cstdlib>6 5 7 6 using namespace std; … … 28 27 ostringstream oss; 29 28 30 string salt = "$1$"; 31 int random; 32 char chr; 33 for(int i=0; i<8; i++) 34 { 35 random = rand() % 62; 36 if (random < 26) 37 chr = (char)('a'+random); 38 else if (random < 52) 39 chr = (char)('A'+random-26); 40 else 41 chr = (char)('0'+random-52); 42 salt += chr; 43 } 44 salt += '$'; 45 46 string encrypted(crypt(password.c_str(), salt.c_str())); 47 48 oss << "'" << username << "', '" << encrypted << "'"; 29 oss << "'" << username << "', '" << password << "'"; 49 30 50 31 return insert("users", "name, password", oss.str()); 51 }52 53 int DataAccess::updatePlayer(string username, string password)54 {55 ostringstream values, where;56 57 values << "password='" << password << "'";58 59 where << "name='" << username << "'";60 61 return update("users", values.str(), where.str());62 32 } 63 33 … … 81 51 } 82 52 83 if ( ( row = mysql_fetch_row(result)) != NULL ) { 84 cout << "Creating a new player" << endl; 53 if ( ( row = mysql_fetch_row(result)) != NULL ) 85 54 p = new Player(string(row[1]), string(row[2])); 86 }else {55 else { 87 56 cout << "Returned no results for some reason" << endl; 88 57 p = NULL; … … 94 63 } 95 64 96 // need to make sure this list is freed 97 // since we need to create a DataAccess class 98 // when calling these functions, 99 // we could free this list in the destructor 100 list<Player*>* DataAccess::getPlayers() 65 int DataAccess::printPlayers() 101 66 { 102 67 MYSQL_RES *result; … … 108 73 if (result == NULL) { 109 74 cout << mysql_error(connection) << endl; 110 return NULL;75 return 1; 111 76 } 112 77 113 list<Player*>* lstPlayers = new list<Player*>();114 78 while ( ( row = mysql_fetch_row(result)) != NULL ) { 115 79 cout << row[0] << ", " << row[1] << ", " << row[2] << endl; 116 lstPlayers->push_back(new Player(row[1], row[2]));117 80 } 118 81 119 82 mysql_free_result(result); 120 83 121 return lstPlayers;84 return 0; 122 85 } 123 86 124 bool DataAccess::verifyPassword(string password, string encrypted) 125 { 126 string test(crypt(password.c_str(), encrypted.c_str())); 127 128 return encrypted.compare(test) == 0; 129 } 130 131 int DataAccess::insert(string table, string columns, string values) 87 int DataAccess::insert(string table, string rows, string values) 132 88 { 133 89 int query_state; 134 90 ostringstream oss; 135 91 136 oss << "INSERT into " << table << " (" << columns << ") VALUES (" << values << ")"; 137 cout << "query: " << oss.str() << endl; 138 139 query_state = mysql_query(connection, oss.str().c_str()); 140 141 if (query_state != 0) { 142 cout << mysql_error(connection) << endl; 143 return 1; 144 } 145 146 return 0; 147 } 148 149 int DataAccess::update(string table, string values, string where) 150 { 151 int query_state; 152 ostringstream oss; 153 154 oss << "UPDATE " << table << " SET " << values << " WHERE " << where; 92 oss << "INSERT into " << table << " (" << rows << ") VALUES (" << values << ")"; 155 93 cout << "query: " << oss.str() << endl; 156 94
Note:
See TracChangeset
for help on using the changeset viewer.