[Ajuda] Problema com MySQL
#1

Estou com um problema, que nгo sei como resolver...
Quando registro dentro do servidor, й chamada a seguinte linha:

PHP код:
Dialog:RegisterScreen(playeridresponselistiteminputtext[])
{
    if (
response)
    {
        if(
strlen(inputtext) < 6) {
            
SendClientMessageEx(playeridCOLOR_LIGHTRED"Vocк digitou uma senha invбlida (mнnimo 7 caracteres).");
            
Dialog_Show(playeridRegisterScreenDIALOG_STYLE_PASSWORD"Californa Roleplay | Registro""Olб, %s.\nSeja bem vindo ao Califуrnia Roleplay!\n\nInformaзгo: Sua conta ainda nгo estб registrada em nosso servidor!\n\n{FF6347}Digite uma senha abaixo para registrar-se:""Registrar""Sair"ReturnName(playerid0));
        } else {
            new
                
query[2580];
            
WP_Hash(PlayerData[playerid][pPassword], 129inputtext);
            
mysql_format(MySQLquerysizeof(query), "INSERT INTO `accounts` (`Username`, `Password`) VALUES ('%e', '%e')"ReturnName(playerid1), PlayerData[playerid][pPassword]);
            
mysql_tquery(MySQLquery"OnAccountRegister""i"playerid);
        }
    } else {
        
Kick(playerid);
    }
    return 
1;

Atй aн tudo bem.
As outras variбveis, sгo nulas, ou seja, sу sгo alteradas atravйs do UPDATE, para que na linha INSERT nгo fiquem muitas linhas.

No caso, fica assim:


Atй aн, sem problema algum; registrei no servidor, e estб tudo normal, o registro no banco de dados foi criado.
Sу que apуs um tempo, nгo sei por que, as linhas na qual define a `Origin`, `Birthdate` e `NomeOOC`, ficam vazias



Daн pensei comigo...
As linhas da origem, data de nascimento e o nome ooc sгo strings
A senha tambйm й uma string
Entгo por quк o mesmo nгo acontece com a senha?
Decidi procurar na gamemode a linha na qual insere a senha no banco de dados

PHP код:
mysql_format(MySQLquerysizeof(query), "INSERT INTO `accounts` (`Username`, `Password`) VALUES ('%e', '%e')"ReturnName(playerid1), PlayerData[playerid][pPassword], ReturnIP(playerid)); 
Percebi que a string estava com Escape, no caso, %e, ao invйs de string direta, como %s.

Entгo, pensando que resolveria o caso, defini todas as strings do UPDATE na qual eram string diretas, para strings com escape, entгo, ficou:

PHP код:
UpdatePlayerData(playerid)
{
    new
        
query[3000];
    if (
GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
    {
        
GetPlayerPos(playeridPlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]);
        
GetPlayerFacingAngle(playeridPlayerData[playerid][pPos][3]);
        
        
GetPlayerHealth(playeridPlayerData[playerid][pHealth]);
        
GetPlayerArmour(playeridPlayerData[playerid][pArmor]);
        
PlayerData[playerid][pMoney] = GetMoney(playerid);
    }
    
format(querysizeof query"UPDATE `accounts` SET `Password` = '%e', `IP` = '%e', `Gender` = '%d', `Origin` = '%e', `Birthdate` = '%e'",
        
PlayerData[playerid][pPassword],
        
PlayerData[playerid][pIP],
        
PlayerData[playerid][pGender],
        
PlayerData[playerid][pOrigin],
        
PlayerData[playerid][pBirthdate]
    );
    
    
format(querysizeof query"%s, `Skin` = '%d', `Registred` = '%d', `PosX` = '%f', `PosY` = '%f', `PosZ` = '%f', `PosA` = '%f', `Admin` = '%d', `NomeOOC` = '%e', `Money` = '%d', `PlayingHours` = '%d', `PlayingMinutes` = '%d', `Interior` = '%d', `World` = '%d'",
        
query,
        
PlayerData[playerid][pSkin],
        
PlayerData[playerid][pRegistred],
        
PlayerData[playerid][pPos][0],
        
PlayerData[playerid][pPos][1],
        
PlayerData[playerid][pPos][2],
        
PlayerData[playerid][pPos][3],
        
PlayerData[playerid][pAdmin],
        
PlayerData[playerid][pOOCName],
        
PlayerData[playerid][pMoney],
        
PlayerData[playerid][pPlayingHours],
        
PlayerData[playerid][pPlayingMinutes],
        
PlayerData[playerid][pInterior],
        
PlayerData[playerid][pWorld]
    );
    
    for (new 
013++) {
        
format(querysizeof(query), "%s, `Gun%d` = '%d', `Ammo%d` = '%d'"query1PlayerData[playerid][pGuns][i], 1PlayerData[playerid][pAmmo][i]);
    }
    
    
format(querysizeof query"%s, `Health` = '%f', `Armor` = '%f', `Injured` = '%d', `Hunger` = '%d', `Thirst` = '%d', `JailTime` = '%d', `Prisoned` = '%d', `Entrance` = '%d', `Banned` = '%d', `BannedBy` = '%e', `BannedReason` = '%e' WHERE `ID` = '%d' LIMIT 1",
        
query,
        
PlayerData[playerid][pHealth],
        
PlayerData[playerid][pArmor],
        
PlayerData[playerid][pInjured],
        
PlayerData[playerid][pHunger],
        
PlayerData[playerid][pThirst],
        
PlayerData[playerid][pJailTime],
        
PlayerData[playerid][pPrisoned],
        
PlayerData[playerid][pEntrance],
        
PlayerData[playerid][pBanned],
        
PlayerData[playerid][pBannedBy],
        
PlayerData[playerid][pBannedReason],
        
PlayerData[playerid][pID]
    );
    
mysql_tquery(MySQLquery);
    return 
1;

Ou seja, todas as strings tornaram-se strings escapadas.

Tentei registrar no servidor, e quando me conectei, dizia que minha senha estava errada...
Pensei ser um bug na database, e quando fui ver, os registros estavam assim:



Como resolver isso
Estou tentando jб tem 2 dias...
Reply
#2

Olб, queria te pedir ao menos, se por gentileza puder passar o nome da include para dialogos que vocк usa? agradeзo, boa sorte na soluзгo do problema
Reply
#3

Quote:
Originally Posted by zHellSync
Посмотреть сообщение
Olб, queria te pedir ao menos, se por gentileza puder passar o nome da include para dialogos que vocк usa? agradeзo, boa sorte na soluзгo do problema
easyDialog.inc
Reply
#4

Alguйm?
Reply
#5

Quote:
Originally Posted by MineiriinHo
Посмотреть сообщение
easyDialog.inc
obrigado, e sobre o pessoal ainda nгo ter respondido.. jб enviei problemas meus aqui em textos longos e o pessoal nem se quer tem coragem de ler, recomendo vocк tentar resumir ao mбximo seu problema, certeza que vгo responder
Reply
#6

Vocк jб nгo tentou atualizar as informaзхes do Player ao ele desconectar, mas tambйm manter essa linha que Seta o Nome e a Senha?
Reply
#7

Quote:
Originally Posted by GuiKommander
Посмотреть сообщение
Vocк jб nгo tentou atualizar as informaзхes do Player ao ele desconectar, mas tambйm manter essa linha que Seta o Nome e a Senha?
Como assim?

Quote:

obrigado, e sobre o pessoal ainda nгo ter respondido.. jб enviei problemas meus aqui em textos longos e o pessoal nem se quer tem coragem de ler, recomendo vocк tentar resumir ao mбximo seu problema, certeza que vгo responder

Fico triste em ler isso, pois a comunidade serve para ajudar quem precisa...
Reply
#8

o format nгo suporta '%e' apenas o mysql_format entгo se vocк for usar o format precisa escapar a string antes
ex:
PHP код:
        // format
    
new senhaescape[24];
    
mysql_escape_string("senha1234fdse"senhaescapesizeof(senhaescape));
        
format(Querysizeof (Query), "UPDATE `accounts` SET `Password` = '%s'"senhaescape) ;
       
        
// mysql_format
        
mysql_format(MySQLQuerysizeof(Query), "UPDATE `accounts` SET `Password` = '%e'"PlayerData[playerid][pPassword]) ; 
Reply
#9

Quote:
Originally Posted by Felipealves
Посмотреть сообщение
o format nгo suporta '%e' apenas o mysql_format entгo se vocк for usar o format precisa escapar a string antes
ex:
PHP код:
        // format
    
new senhaescape[24];
    
mysql_escape_string("senha1234fdse"senhaescapesizeof(senhaescape));
        
format(Querysizeof (Query), "UPDATE `accounts` SET `Password` = '%s'"senhaescape) ;
       
        
// mysql_format
        
mysql_format(MySQLQuerysizeof(Query), "UPDATE `accounts` SET `Password` = '%e'"PlayerData[playerid][pPassword]) ; 
Continua a mesma coisa
Reply
#10

UP!!!!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)