SA-MP Forums Archive
help returning dialog - if(strlen(inputtext) < 4) not working properly - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: help returning dialog - if(strlen(inputtext) < 4) not working properly (/showthread.php?tid=549602)



help returning dialog - if(strlen(inputtext) < 4) not working properly - iBanner - 07.12.2014

Why is that I can still register without typing password or even by putting 3 characters less. Can someone help me solve this?

And it should return to Register dialog after putting invalid password. Coz mine after I put empty password and I clicked register I spawned.

Код:
	if(dialogid == DIALOG_REGISTER)
	{
		if(!response)
		{
		    SendClientMessage(playerid,-1,""RED"[KICK] "WHITE"You have been kicked for pressing the Leave button.");
		    KickEx(playerid);
		}
		if(response)
		{
		    if(strlen(inputtext) < 4)return SendClientMessage(playerid, -1, ""RED"[REGISTER] "WHITE"Your password should have atleast 4 characters!");
		    new Query[500];
		    new hashed[129];
		    new year, month, day;
		    getdate(year, month, day);
		    WP_Hash(hashed, sizeof(hashed), inputtext);
		    format(Query,sizeof(Query),"INSERT INTO `users` (`Name`,`Password`,`Admin`,`Founder`,`Score`,`Money`,`Kills`,`Deaths`, `Skin`, `RegDate`) VALUES ('%s','%s','0','0','0','0','0','0','0', '%d/%d/%d')",GetName(playerid),hashed, day,month,year);
		    mysql_function_query(cHandle, Query, false, "", "d", playerid);
		    new Query1[368];
		    format(Query1,sizeof(Query1),"UPDATE `users` SET `Banned` = '0', `RegIP` = '%s', `IP` = '%s' WHERE `Name` = '%s'",GetIp(playerid),GetIp(playerid),GetName(playerid));
                    mysql_function_query(cHandle, Query1, false, "", "d", playerid);
                    ResetPlayerMoney(playerid);
                    SetPlayerLevel(playerid, 0);
                    PlayerInfo[playerid][TimeOnline] = 0;
                    playerOnline[playerid] = gettime();
                    SendClientMessageEx(playerid,-1,""RED"[REGISTER] "GREEN"You are now successfully registered in our database! | Name: %s | Password: %s",GetName(playerid),inputtext);
	            new message[128];
	            format(message, sizeof(message), "04[REGISTER] 01%s has registered in the server! (IP: %s)", GetName(playerid), GetIp(playerid));
	            IRC_GroupSay(groupIDA, IRC_ADMIN_CHANNEL, message);
	          }
          }



Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - JuanStone - 07.12.2014

pawn Код:
if(strlen(inputtext) < 4 && strlen(inputtext) > 50) // 50 max characters
{
    SendClientMessage(playerid, -1, ""RED"[REGISTER] "WHITE"Your password should have atleast 4 characters max 50!");
    ShowDialogRegister// Edit
}
else if(strlen(inputtext) > 4 && strlen(inputtext) < 50)
{
    Fuction register..
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTER)
    {
        if(!response) return SendClientMessage(playerid, -1, "register canceled.", Kick(playerid);
        if(response)
        {
            if(strlen(inputtext) < 4 && strlen(inputtext) > 50) // 50 max characters
            {
                SendClientMessage(playerid, -1, ""RED"[REGISTER] "WHITE"Your password should have atleast 4 characters max 50!");
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Your password should have atleast 4 characters max 50!", "OK", "exit");
            }
            else if(strlen(inputtext) > 4 && strlen(inputtext) < 50)
            {
                new Query[500], Query1[368], hashed[129], year, month, day;
                getdate(year, month, day);
                WP_Hash(hashed, sizeof(hashed), inputtext);
                format(Query,sizeof(Query),"INSERT INTO `users` (`Name`,`Password`,`Admin`,`Founder`,`Score`,`Money`,`Kills`,`Deaths`, `Skin`, `RegDate`) VALUES ('%s','%s','0','0','0','0','0','0','0', '%d/%d/%d')",GetName(playerid),hashed, day,month,year);
                mysql_function_query(cHandle, Query, false, "", "d", playerid);

                format(Query1,sizeof(Query1),"UPDATE `users` SET `Banned` = '0', `RegIP` = '%s', `IP` = '%s' WHERE `Name` = '%s'",GetIp(playerid),GetIp(playerid),GetName(playerid));
                mysql_function_query(cHandle, Query1, false, "", "d", playerid);
                ResetPlayerMoney(playerid);
                SetPlayerLevel(playerid, 0);
                PlayerInfo[playerid][TimeOnline] = 0;
                playerOnline[playerid] = gettime();
                SendClientMessageEx(playerid,-1,""RED"[REGISTER] "GREEN"You are now successfully registered in our database! | Name: %s | Password: %s",GetName(playerid),inputtext);
                new message[128];
                format(message, sizeof(message), "04[REGISTER] 01%s has registered in the server! (IP: %s)", GetName(playerid), GetIp(playerid));
                IRC_GroupSay(groupIDA, IRC_ADMIN_CHANNEL, message);
            }
        }
   }
   return true;
}



Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - kampuman - 07.12.2014

Quote:
Originally Posted by JuanStone
Посмотреть сообщение
pawn Код:
if(strlen(inputtext) < 4 && strlen(inputtext) > 50) // 50 max characters
{
    SendClientMessage(playerid, -1, ""RED"[REGISTER] "WHITE"Your password should have atleast 4 characters max 50!");
    ShowDialogRegister// Edit
}
else if(strlen(inputtext) > 4 && strlen(inputtext) < 50)
{
    Fuction register..
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTER)
    {
        if(!response) return SendClientMessage(playerid, -1, "register canceled.", Kick(playerid);
        if(response)
        {
            if(strlen(inputtext) < 4 && strlen(inputtext) > 50) // 50 max characters
            {
                SendClientMessage(playerid, -1, ""RED"[REGISTER] "WHITE"Your password should have atleast 4 characters max 50!");
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Your password should have atleast 4 characters max 50!", "OK", "exit");
            }
            else if(strlen(inputtext) > 4 && strlen(inputtext) < 50)
            {
                new Query[500], Query1[368], hashed[129], year, month, day;
                getdate(year, month, day);
                WP_Hash(hashed, sizeof(hashed), inputtext);
                format(Query,sizeof(Query),"INSERT INTO `users` (`Name`,`Password`,`Admin`,`Founder`,`Score`,`Money`,`Kills`,`Deaths`, `Skin`, `RegDate`) VALUES ('%s','%s','0','0','0','0','0','0','0', '%d/%d/%d')",GetName(playerid),hashed, day,month,year);
                mysql_function_query(cHandle, Query, false, "", "d", playerid);

                format(Query1,sizeof(Query1),"UPDATE `users` SET `Banned` = '0', `RegIP` = '%s', `IP` = '%s' WHERE `Name` = '%s'",GetIp(playerid),GetIp(playerid),GetName(playerid));
                mysql_function_query(cHandle, Query1, false, "", "d", playerid);
                ResetPlayerMoney(playerid);
                SetPlayerLevel(playerid, 0);
                PlayerInfo[playerid][TimeOnline] = 0;
                playerOnline[playerid] = gettime();
                SendClientMessageEx(playerid,-1,""RED"[REGISTER] "GREEN"You are now successfully registered in our database! | Name: %s | Password: %s",GetName(playerid),inputtext);
                new message[128];
                format(message, sizeof(message), "04[REGISTER] 01%s has registered in the server! (IP: %s)", GetName(playerid), GetIp(playerid));
                IRC_GroupSay(groupIDA, IRC_ADMIN_CHANNEL, message);
            }
        }
   }
   return true;
}
Hi mate. thanks for your help but now I tried to put less than 3 letters and click register but it didn't show any "Your password should have atleast 4 characters max 50!" it just directs me to spawn menu button. hmm, so I guess there is something wrong with you gave.


Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - JuanStone - 07.12.2014

Forgiveness, change it to this.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTER)
    {
        if(!response) return SendClientMessage(playerid, -1, "register canceled.", Kick(playerid);
        if(response)
        {
            if(strlen(inputtext) < 4 || strlen(inputtext) > 50) // 50 max characters
            {
                SendClientMessage(playerid, -1, ""RED"[REGISTER] "WHITE"Your password should have atleast 4 characters max 50!");
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Your password should have atleast 4 characters max 50!", "OK", "exit");
            }
            else if(strlen(inputtext) > 4 && strlen(inputtext) < 50)
            {
                new Query[500], Query1[368], hashed[129], year, month, day;
                getdate(year, month, day);
                WP_Hash(hashed, sizeof(hashed), inputtext);
                format(Query,sizeof(Query),"INSERT INTO `users` (`Name`,`Password`,`Admin`,`Founder`,`Score`,`Money`,`Kills`,`Deaths`, `Skin`, `RegDate`) VALUES ('%s','%s','0','0','0','0','0','0','0', '%d/%d/%d')",GetName(playerid),hashed, day,month,year);
                mysql_function_query(cHandle, Query, false, "", "d", playerid);

                format(Query1,sizeof(Query1),"UPDATE `users` SET `Banned` = '0', `RegIP` = '%s', `IP` = '%s' WHERE `Name` = '%s'",GetIp(playerid),GetIp(playerid),GetName(playerid));
                mysql_function_query(cHandle, Query1, false, "", "d", playerid);
                ResetPlayerMoney(playerid);
                SetPlayerLevel(playerid, 0);
                PlayerInfo[playerid][TimeOnline] = 0;
                playerOnline[playerid] = gettime();
                SendClientMessageEx(playerid,-1,""RED"[REGISTER] "GREEN"You are now successfully registered in our database! | Name: %s | Password: %s",GetName(playerid),inputtext);
                new message[128];
                format(message, sizeof(message), "04[REGISTER] 01%s has registered in the server! (IP: %s)", GetName(playerid), GetIp(playerid));
                IRC_GroupSay(groupIDA, IRC_ADMIN_CHANNEL, message);
            }
        }
   }
   return true;
}



Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - Clad - 07.12.2014

pawn Код:
if(dialogid == DIALOG_REGISTER)
    {
        if(!response)
        {
            SendClientMessage(playerid,-1,""RED"[KICK] "WHITE"You have been kicked for pressing the Leave button.");
            KickEx(playerid);
        }
        if(response)
        {
            if(strlen(inputtext) < 4 || strlen(inputtext) > 28)             {                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "", "Register", "Quit");            }
            new Query[500];
            new hashed[129];
            new year, month, day;
            getdate(year, month, day);
            WP_Hash(hashed, sizeof(hashed), inputtext);
            format(Query,sizeof(Query),"INSERT INTO `users` (`Name`,`Password`,`Admin`,`Founder`,`Score`,`Money`,`Kills`,`Deaths`, `Skin`, `RegDate`) VALUES ('%s','%s','0','0','0','0','0','0','0', '%d/%d/%d')",GetName(playerid),hashed, day,month,year);
            mysql_function_query(cHandle, Query, false, "", "d", playerid);
            new Query1[368];
            format(Query1,sizeof(Query1),"UPDATE `users` SET `Banned` = '0', `RegIP` = '%s', `IP` = '%s' WHERE `Name` = '%s'",GetIp(playerid),GetIp(playerid),GetName(playerid));
                    mysql_function_query(cHandle, Query1, false, "", "d", playerid);
                    ResetPlayerMoney(playerid);
                    SetPlayerLevel(playerid, 0);
                    PlayerInfo[playerid][TimeOnline] = 0;
                    playerOnline[playerid] = gettime();
                    SendClientMessageEx(playerid,-1,""RED"[REGISTER] "GREEN"You are now successfully registered in our database! | Name: %s | Password: %s",GetName(playerid),inputtext);
                new message[128];
                format(message, sizeof(message), "04[REGISTER] 01%s has registered in the server! (IP: %s)", GetName(playerid), GetIp(playerid));
                IRC_GroupSay(groupIDA, IRC_ADMIN_CHANNEL, message);
              }
          }



Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - kampuman - 07.12.2014

Quote:
Originally Posted by Clad
Посмотреть сообщение
pawn Код:
if(dialogid == DIALOG_REGISTER)
    {
        if(!response)
        {
            SendClientMessage(playerid,-1,""RED"[KICK] "WHITE"You have been kicked for pressing the Leave button.");
            KickEx(playerid);
        }
        if(response)
        {
            if(strlen(inputtext) < 4 || strlen(inputtext) > 28)             {                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "", "Register", "Quit");            }
            new Query[500];
            new hashed[129];
            new year, month, day;
            getdate(year, month, day);
            WP_Hash(hashed, sizeof(hashed), inputtext);
            format(Query,sizeof(Query),"INSERT INTO `users` (`Name`,`Password`,`Admin`,`Founder`,`Score`,`Money`,`Kills`,`Deaths`, `Skin`, `RegDate`) VALUES ('%s','%s','0','0','0','0','0','0','0', '%d/%d/%d')",GetName(playerid),hashed, day,month,year);
            mysql_function_query(cHandle, Query, false, "", "d", playerid);
            new Query1[368];
            format(Query1,sizeof(Query1),"UPDATE `users` SET `Banned` = '0', `RegIP` = '%s', `IP` = '%s' WHERE `Name` = '%s'",GetIp(playerid),GetIp(playerid),GetName(playerid));
                    mysql_function_query(cHandle, Query1, false, "", "d", playerid);
                    ResetPlayerMoney(playerid);
                    SetPlayerLevel(playerid, 0);
                    PlayerInfo[playerid][TimeOnline] = 0;
                    playerOnline[playerid] = gettime();
                    SendClientMessageEx(playerid,-1,""RED"[REGISTER] "GREEN"You are now successfully registered in our database! | Name: %s | Password: %s",GetName(playerid),inputtext);
                new message[128];
                format(message, sizeof(message), "04[REGISTER] 01%s has registered in the server! (IP: %s)", GetName(playerid), GetIp(playerid));
                IRC_GroupSay(groupIDA, IRC_ADMIN_CHANNEL, message);
              }
          }
Still the same. I can still register without password or even less than 3 letters. Maybe theres a problem with mysql so I'd check it and it says "CMySQLHandle::Create - connection already exists" from mysql_log

edit: i didn't see juanstone edited post. im going to try. hope it works


Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - kampuman - 07.12.2014

@JuanStone - thanks mate it seems like working fine now. And last one, why is that when I registered successfully then I exit the game and after logging in back my account, I input any word or text and it logs me in even its wrong (it didn't tell me that my password is incorrect) I'm not sure but it looks like mysql is accepting even if its wrong. I've checked the localhost phpmyadmin database and I can see the password were saved.

Код:
	if(dialogid == DIALOG_LOGIN)
	{
		if(!response)
		{
			ShowRenameScreen(playerid);
		}
		if(response)
		{
            new pHashed[129];
			WP_Hash(pHashed, sizeof(pHashed), inputtext);
			if(!strcmp(PlayerInfo[playerid][Password], pHashed, true))
			{
			    new Query[100];
			    format(Query,sizeof(Query),"SELECT * FROM `users` WHERE `Name` = '%s'",GetName(playerid));
			    mysql_function_query(cHandle, Query, true, "LoginPlayer", "d", playerid);
			    new Query1[100];
			 	format(Query1,sizeof(Query1),"UPDATE `users` SET `IP` = '%s' WHERE `Name` = '%s'",GetIp(playerid), GetName(playerid));
	            mysql_function_query(cHandle, Query1, false, "", "d", playerid);
			}
			else
			{
				ShowLoginScreen(playerid);
				SendClientMessage(playerid, -1, ""RED"[PASS] "WHITE"The password you entered is incorrect, please enter the correct password to login!");
			}
		}
	}



Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - JuanStone - 07.12.2014

I am sorry I did not understand anything, you try to say who was admitted with any text ?.


Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - kampuman - 07.12.2014

Quote:
Originally Posted by JuanStone
Посмотреть сообщение
I am sorry I did not understand anything, you try to say who was admitted with any text ?.
Got it mate. Thanks btw. I solved it by reverting back mysql latest version to old version r7 lol.


Re: help returning dialog - if(strlen(inputtext) < 4) not working properly - JuanStone - 07.12.2014

Quote:
Originally Posted by kampuman
Посмотреть сообщение
Got it mate. Thanks btw. I solved it by reverting back mysql latest version to old version r7 lol.
Show "LoginPlayer"

pawn Код:
new i_bad_password[MAX_PLAYERS];

public OnPlayerConnect..
{
    i_bad_password[playerid] = 0;
    return true;
}

        if(dialogid ==  DIALGO_LOGIN)
        {
            if(!response) return ShowPlayerDialog(playerid, DIALGO_LOGIN, DIALOG_STYLE_PASSWORD, "Login","account is already registed, enter your password", "OK", "");
            if(response)
            {
                new i_query[200], i_password[50];
                WP_Hash(i_password, sizeof(i_password), inputtext);
                format(i_query, sizeof(i_query), "SELECT `Name` FROM users WHERE Name = '%s' AND Password = '%s'", GetName(playerid), i_password);
                mysql_query(i_query);
                mysql_store_result();
               
                if(mysql_num_rows() == 1)
                {
                    Load data_user(playerid); // edit your function load dats.
                }
                if(!mysql_num_rows())
                {
                    i_bad_password[playerid]++;
                    if(i_bad_password[playerid] < 5)
                    {
                        SendClientMessage(playerid, -1, "The password you entered is incorrect, please enter the correct password to login!");
                        ShowPlayerDialog(playerid, DIALGO_LOGIN, DIALOG_STYLE_PASSWORD, "Login","enter your password correct", "OK", "");
                    }
                    else if(i_bad_password[playerid] >= 5)
                    {
                        format(i_query, sizeof(i_query), "%s kicked reason: 5 incorrect logins.", GetName(playerid));
                        SendClientMessage(playerid, -1, i_query);
                        Kick(playerid);
                    }
                }
                mysql_free_result();
            }
        }
    }
    return true;
}