Account Register Spam
#1

Hello, I am a beginner in scripting
I have a little problem demgam an account
if the account registers into the server, he will perform spam
sometimes doing spam, sometimes not

there may be a suggestion? why is this happening?

Reply
#2

Show your register/login system from A to Z.
Reply
#3

Код:
OnPlayerConnect
{
	mysql_format(mysql, query, sizeof(query),"SELECT `Password` FROM `players` WHERE `Username` = '%e'", GetName(playerid));
    mysql_tquery(mysql, query, "CheckPlayer", "i", playerid);
}
forward CheckPlayer(playerid);
public CheckPlayer(playerid)
{
	if(strfind(GetName(playerid), "kontol", true) != -1 || strfind(GetName(playerid), "memek", true) != -1 || strfind(GetName(playerid), "anjing", true) != -1 || strfind(GetName(playerid), "server", true) != -1)
	{
		SCM(playerid, -1, server"{FF2400}sorry, you can not join this server because your name");
	}
	else
	{
		new rows, fields,string[400];
		cache_get_data(rows, fields, mysql);
		if(rows)
		{
			format(string, sizeof(string),"{FFFFFF}Welcome to the server \n\nAccount Name: %s \nStatus: {00FF00}registered{ffffff}\nplease enter the password in the box provided below:", GetName(playerid));
			cache_get_field_content(0, "Password", PlayerInfo[playerid][Password], mysql, 129);
			ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login Dialog",string,"Login","");
		}
		else
		{
			format(string, sizeof(string),"{FFFFFF}Welcome to the server \n\nAccount Name: %s \nStatus: not{FF0000}register{ffffff}\nplease enter the password in the box provided below:", GetName(playerid));
			ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register Dialog",string,"Register","");
		}
	}
	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
    {
		case DIALOG_REGISTER:
		{
			new string[200];
			if(!response)
			{
				SCM(playerid, -1, warning"Kamu tidak register, kicked!");
				KickEx(playerid);
			}
			if (strlen(inputtext) < 4 || strlen(inputtext) > 20)
			{
				format(string, sizeof(string),"{FFFFFF}Welcome to the server \n\nAccount Name: %s \nStatus: not{FF0000}register{ffffff}\nplease enter the password in the box provided below:", GetName(playerid));
				ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register Dialog",string,"Register","");
			}
			new query[600];
			WP_Hash(PlayerInfo[playerid][Password], 129, inputtext);
			mysql_format(mysql, query, sizeof(query), "INSERT INTO `players` (`Username`, `Password`, `IP`) VALUES ('%e','%e','%e')", GetName(playerid),PlayerInfo[playerid][Password],GetIP(playerid));
			mysql_tquery(mysql, query, "RegisterPlayer", "i", playerid);
		}
		case DIALOG_LOGIN:
		{
			if(response)
			{
				new hpass[129],query[254];
				WP_Hash(hpass, 129, inputtext);
				if(!strcmp(hpass, PlayerInfo[playerid][Password]))
				{
					mysql_format(mysql, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e' LIMIT 1", GetName(playerid));
					mysql_tquery(mysql, query, "LoadPlayer", "i", playerid);
				}
				else
				{
					format(query, sizeof(query),"{FFFFFF}Welcome to the server \n\nAccount Name: %s\nStatus: {00FF00}registered{ffffff}\nplease enter the password in the box provided below:", GetName(playerid));
					ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login Dialog",query,"Login","");
				}
			}
			else
			{
				SCM(playerid, -1, warning"Kamu tidak login, kicked!");
				KickEx(playerid);
			}
		}
	}
	return 1;
}
forward RegisterPlayer(playerid);
public RegisterPlayer(playerid)
{
	new str[254];
	SCM(playerid, -1, account"Successfully registered.");
	PlayerInfo[playerid][ID] = cache_insert_id();
	PlayerInfo[playerid][Logged] = 1;
	return 1;
}
forward LoadPlayer(playerid);
public LoadPlayer(playerid)
{
	new str[254];
	SCM(playerid, -1, account"Successfully Loaded.");
	PlayerInfo[playerid][Logged] = 1;
	return 1;
}
this is you want
Reply
#4

Hmm, I do not see why it spams it, however you might want to try this:
PHP код:
OnPlayerConnect
{
    
mysql_format(mysqlquerysizeof(query),"SELECT `Password` FROM `players` WHERE `Username` = '%e'"GetName(playerid));
    
mysql_tquery(mysqlquery"CheckPlayer""i"playerid);
}
forward CheckPlayer(playerid);
public 
CheckPlayer(playerid)
{
    if(
strfind(GetName(playerid), "kontol"true) != -|| strfind(GetName(playerid), "memek"true) != -|| strfind(GetName(playerid), "anjing"true) != -|| strfind(GetName(playerid), "server"true) != -1)
    {
        
SCM(playerid, -1server"{FF2400}Sorry, you can't join this server because of your name.");
    }
    else
    {
        new 
rowsfields,string[400];
        
cache_get_data(rowsfieldsmysql);
        if(
rows)
        {
            
format(stringsizeof(string),"{FFFFFF}Welcome to the server \n\nAccount Name: %s \nStatus: {00FF00}registered{ffffff}\nplease enter the password in the box provided below:"GetName(playerid));
            
cache_get_field_content(0"Password"PlayerInfo[playerid][Password], mysql129);
            
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login Dialog",string,"Login","");
        }
        else
        {
            
format(stringsizeof(string),"{FFFFFF}Welcome to the server \n\nAccount Name: %s \nStatus: not{FF0000}register{ffffff}\nplease enter the password in the box provided below:"GetName(playerid));
            
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"Register Dialog",string,"Register","");
        }
    }
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid)
    {
        case 
DIALOG_REGISTER:
        {
            new 
string[200];
            if(!
response)
            {
                
SCM(playerid, -1warning"Kamu tidak register, kicked!");
                
KickEx(playerid);
            }
            if (
strlen(inputtext) < || strlen(inputtext) > 20)
            {
                
format(stringsizeof(string),"{FFFFFF}Welcome to the server \n\nAccount Name: %s \nStatus: not{FF0000}register{ffffff}\nplease enter the password in the box provided below:"GetName(playerid));
                return 
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"Register Dialog",string,"Register","");
            }
            new 
query[300];
            
WP_Hash(PlayerInfo[playerid][Password], 129inputtext);
            
mysql_format(mysqlquerysizeof(query), "INSERT INTO `players` (`Username`, `Password`, `IP`) VALUES ('%e','%e','%e')"GetName(playerid),PlayerInfo[playerid][Password],GetIP(playerid));
            
mysql_tquery(mysqlquery"RegisterPlayer""i"playerid);
        }
        case 
DIALOG_LOGIN:
        {
            if(
response)
            {
                new 
hpass[129],query[254];
                
WP_Hash(hpass129inputtext);
                if(!
strcmp(hpassPlayerInfo[playerid][Password]))
                {
                    
mysql_format(mysqlquerysizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e' LIMIT 1"GetName(playerid));
                    
mysql_tquery(mysqlquery"LoadPlayer""i"playerid);
                }
                else
                {
                    
format(querysizeof(query),"{FFFFFF}Welcome to the server \n\nAccount Name: %s\nStatus: {00FF00}registered{ffffff}\nplease enter the password in the box provided below:"GetName(playerid));
                    
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login Dialog",query,"Login","");
                }
            }
            else
            {
                
SCM(playerid, -1warning"Kamu tidak login, kicked!");
                
KickEx(playerid);
            }
        }
    }
    return 
1;
}
forward RegisterPlayer(playerid);
public 
RegisterPlayer(playerid)
{
    new 
str[254];
    
SCM(playerid, -1account"Succesfully registered.");
    
PlayerInfo[playerid][ID] = cache_insert_id();
    
PlayerInfo[playerid][Logged] = 1;
    return 
1;
}
forward LoadPlayer(playerid);
public 
LoadPlayer(playerid)
{
    new 
str[254];
    
SCM(playerid, -1account"Succesfully Loaded.");
    
PlayerInfo[playerid][Logged] = 1;
    return 
1;

Reply
#5

Set username Column as unique and collate nocase.
Reply
#6

Always use return statement once you're done with handling any dialogid. You're checking if the response is equal to zero and sends a message where the dialog handling is likely to be over but instead your code jumps into further code. I also suggest you to consider what the above post has told about having unique columns or primary keys.

In addition to what I've stated above : I wouldn't suggest beginners to create their own user systems. I'm not stopping anyone from trying to learn. But instead of risking player data, I'd rather suggest to know more about creating a secure login/register system first.
Reply
#7

Also put a UNIQUE constraint on the name column so you don't pollute your database.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)