Accounts not registering / saving?
#1

My accounts aren't registering or saving. It doesn't show me anything once it hits onplayerregister function.
Код:
public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Visionary Roleplay");
	new MySQLOpt: option_id = mysql_init_options();
	mysql_set_option(option_id, AUTO_RECONNECT, true);


	Database = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);

	if(Database == MYSQL_INVALID_HANDLE || mysql_errno(Database) != 0)
	{
		print("I couldn't connect to the MySQL server, closing.");

		SendRconCommand("exit");
		return 1;
	}

	print("I have connected to the MySQL server.");
    return 1;
}

public OnPlayerConnect(playerid)
{
    new DB_Query[115];

	PlayerInfo[playerid][PasswordFails] = 0;
    PlayerInfo[playerid][Admin] = 0;

	GetPlayerName(playerid, PlayerInfo[playerid][Name], MAX_PLAYER_NAME);
	Corrupt_Check[playerid]++;

	mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM `accounts` WHERE `NAME` = '%e' LIMIT 1", PlayerInfo[playerid][Name]);
	mysql_tquery(Database, DB_Query, "OnPlayerDataCheck", "ii", playerid, Corrupt_Check[playerid]);
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch (dialogid)
	{
		case LoginDialog:
		{
			if(!response) return Kick(playerid);

			new buf[129];
			
			WP_Hash(buf, sizeof(buf), inputtext);

			if(!strcmp(buf, PlayerInfo[playerid][Password], true))
            {
    			OnPlayerLogin(playerid);
			}
			else
			{
			    new String[150];

				PlayerInfo[playerid][PasswordFails] += 1;
				printf("%s has been failed to login. (%d)", PlayerInfo[playerid][Name], PlayerInfo[playerid][PasswordFails]);

				if (PlayerInfo[playerid][PasswordFails] >= 3)
				{
					Kick(playerid);
				}
				else
				{
					format(String, sizeof(String), "Wrong password, you have %d out of 3 tries.", PlayerInfo[playerid][PasswordFails]);
					SendClientMessage(playerid, 0xFF0000FF, String);

              		format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
            		{0099FF}Please, input your password below to proceed to the game.\n\n", PlayerInfo[playerid][Name]);
            		ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
				}
			}
		}
		case RegisterDialog:
		{
			if(!response) return Kick(playerid);

			if(strlen(inputtext) <= 5 || strlen(inputtext) > 60)
			{

		    	SendClientMessage(playerid, 0x969696FF, "Invalid password length, should be 5 - 60.");

				new String[150];

    	    	format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
    	     	{0099FF}Please, input your password below to proceed.\n\n", PlayerInfo[playerid][Name]);
	        	ShowPlayerDialog(playerid, RegisterDialog, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
			}
			else
			{
			    new playerip[16];
				
				WP_Hash(PlayerInfo[playerid][Password], 129, inputtext); //hashing inputtext
            	GetPlayerIp(playerid, playerip, sizeof(playerip));

		    	new DB_Query[225];

		    	mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `accounts` (`Name`, `Password`, `IP`, `Admin`) VALUES ('%e', '%s', '%s', '0')", PlayerInfo[playerid][Name], PlayerInfo[playerid][Password], playerip);
		     	mysql_tquery(Database, DB_Query, "OnPlayerRegister", "d", playerid);
		     }
		}
	}
	return 1;
}

forward public OnPlayerDataCheck(playerid, corrupt_check);
public OnPlayerDataCheck(playerid, corrupt_check)
{
	if (corrupt_check != Corrupt_Check[playerid]) return Kick(playerid);

	new String[150];

	if(cache_num_rows() > 0)
	{

		cache_get_value_name(0, "Password", PlayerInfo[playerid][Password]);

		PlayerInfo[playerid][Player_Cache] = cache_save();

		format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
		{0099FF}Please, input your password below to proceed to the game.\n\n", PlayerInfo[playerid][Name]);
		ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
	}
	else
	{
		format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
		{0099FF}Please, input your password below to proceed to the game.\n\n", PlayerInfo[playerid][Name]);
		ShowPlayerDialog(playerid, RegisterDialog, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
	}
	return 1;
}

forward public OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
	SendClientMessage(playerid, 0x00FF00FF, "Welcome to Visionary roleplay.");
    PlayerInfo[playerid][LoggedIn] = true;
    return 1;
}

forward public OnPlayerLogin(playerid);
public OnPlayerLogin(playerid)
{
	cache_set_active(PlayerInfo[playerid][Player_Cache]);

	cache_get_value_int(0, "ID", PlayerInfo[playerid][ID]);

	cache_get_value_int(0, "Admin", PlayerInfo[playerid][Admin]);


	cache_delete(PlayerInfo[playerid][Player_Cache]);
	PlayerInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;

	PlayerInfo[playerid][LoggedIn] = true;
	SendClientMessage(playerid, 0x00FF00FF, "Logged in to the account.");
    return 1;
}

forward public OnPlayerAccountSave(playerid);
public OnPlayerAccountSave(playerid)
{
	Corrupt_Check[playerid]++;

	new DB_Query[256];
	if(PlayerInfo[playerid][LoggedIn] == true)
	{
		mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `accounts` SET `ADMIN` = %d WHERE `ID` = %d LIMIT 1",
		PlayerInfo[playerid][Admin], PlayerInfo[playerid][ID]);

		mysql_tquery(Database, DB_Query);

		if(cache_is_valid(PlayerInfo[playerid][Player_Cache]))
		{
			cache_delete(PlayerInfo[playerid][Player_Cache]);
			PlayerInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
		}
	}
    return 1;
}
Reply
#2

Don't escape strings when you want to SELECT (change '%e' to '%s')
Reply
#3

Quote:
Originally Posted by iLearner
Посмотреть сообщение
Don't escape strings when you want to SELECT (change '%e' to '%s')
Still logs the accounts in using any password they type.

Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch (dialogid)
	{
		case LoginDialog:
		{
			if(!response) return Kick(playerid);

			new hash[65];
	    	// hashing the text that user entered and salt that was loaded
        	SHA256_PassHash(inputtext, PlayerInfo[playerid][Salt], hash, 65);

			if(!strcmp(hash, PlayerInfo[playerid][Password]))
			{
    			OnPlayerLogin(playerid);
			}
			else
			{
			    new String[150];

				PlayerInfo[playerid][PasswordFails] += 1;
				printf("%s has been failed to login. (%d)", PlayerInfo[playerid][Name], PlayerInfo[playerid][PasswordFails]);

				if (PlayerInfo[playerid][PasswordFails] >= 3)
				{
					Kick(playerid);
				}
				else
				{
					format(String, sizeof(String), "Wrong password, you have %d out of 3 tries.", PlayerInfo[playerid][PasswordFails]);
					SendClientMessage(playerid, 0xFF0000FF, String);

              		format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
            		{0099FF}Please, input your password below to proceed to the game.\n\n", PlayerInfo[playerid][Name]);
            		ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
				}
			}
		}
		case RegisterDialog:
		{
			if(!response) return Kick(playerid);

			if(strlen(inputtext) <= 5 || strlen(inputtext) > 60)
			{

		    	SendClientMessage(playerid, 0x969696FF, "Invalid password length, should be 5 - 60.");

				new String[150];

    	    	format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
    	     	{0099FF}Please, input your password below to proceed.\n\n", PlayerInfo[playerid][Name]);
	        	ShowPlayerDialog(playerid, RegisterDialog, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
			}
			else
			{
			    new playerip[16];
				
				new salt[11];
				// generating random string of characters which is 10 character long
				for(new i; i < 10; i++)
				{
					// storing random character in every slot of our salt array
					salt[i] = random(79) + 47;
				}
				salt[10] = 0;
				SHA256_PassHash(inputtext, salt, PlayerInfo[playerid][Password], 65);
            	GetPlayerIp(playerid, playerip, sizeof(playerip));

		    	new DB_Query[225];

		    	mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `accounts` (`Name`, `Password`, `Salt`) VALUES ('%e', '%e', '%e')", PlayerInfo[playerid][Name], PlayerInfo[playerid][Password], salt);
		     	mysql_tquery(Database, DB_Query, "OnPlayerRegister", "d", playerid);
		     }
		}
	}
	return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)