Postado Janeiro 27, 2021 4 anos Estou utilizando o MyAcc, e, por acaso, instalei por cima de outra database. Agora, quando eu crio outras contas no myacc, elas nao logam, mesmo estando na database, somente a conta de quando criei no modernacc. O que poderia ser?
Postado Janeiro 27, 2021 4 anos Autor Agora, cesarfilho55 disse: Estou utilizando o MyAcc, e, por acaso, instalei por cima de outra database. Agora, quando eu crio outras contas no myacc, elas nao logam, mesmo estando na database, somente a conta de quando criei no modernacc. O que poderia ser? Provavelmente é problema no salt. Seu jogo não deve utilizar salt, mas o site está utilizando salt na hora de criptografar sua senha. Para corrigir isso, faça 1 teste. Confira se a conta criada no site, loga no site e se loga no jogo. Se logar somente no site, é o salt que ele está aplicando. O que você precisa fazer para corrigir isso é acessar o arquivo createaccount.php no diretório system/pages/createaccount.php e dar ctrl+f nisto: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); $password = $salt . $password; } Altere a linha que está escrito $password = $salt . $password para $password = $password; ficando assim: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); $password = $password; } Basicamente retiramos a inserção de 10 caracteres aleatórios em nossa senha antes de criptografar ela, agora vamos criptografar somente o que foi digitado no campo password. Agora acesse o arquivo login.php no diretório system/login.php, de ctrl+f em $config_salt_enabled = $db->hasColumn('accounts', 'salt');, você vai encontrar isto: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($account_logged->isLoaded() && encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5) ) { setSession('account', $account_logged->getId()); setSession('password', encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password)); if($remember_me) { setSession('remember_me', true); } Aqui vamos remover a criptografia do salt para podermos acessar nossa conta sem utilizar o valor do salt na hora de conferir a senha com o banco de dados. Altere o trecho do código acima pelo seguinte código: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($account_logged->isLoaded() && encrypt($login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5)) { setSession('account', $account_logged->getId()); setSession('password', encrypt($login_password)); if($remember_me) { setSession('remember_me', true); } } Salve o arquivo, crie 1 nova conta em seu site e tente logar tanto no site quanto no jogo, se o problema era o salt, então ele estará resolvido e você irá conseguir acessar normalmente sua conta tanto no site quanto no jogo.
Postado Janeiro 27, 2021 4 anos 37 minutos atrás, Endless disse: Provavelmente é problema no salt. Seu jogo não deve utilizar salt, mas o site está utilizando salt na hora de criptografar sua senha. Para corrigir isso, faça 1 teste. Confira se a conta criada no site, loga no site e se loga no jogo. Se logar somente no site, é o salt que ele está aplicando. O que você precisa fazer para corrigir isso é acessar o arquivo createaccount.php no diretório system/pages/createaccount.php e dar ctrl+f nisto: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); $password = $salt . $password; } Altere a linha que está escrito $password = $salt . $password para $password = $password; ficando assim: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); $password = $password; } Basicamente retiramos a inserção de 10 caracteres aleatórios em nossa senha antes de criptografar ela, agora vamos criptografar somente o que foi digitado no campo password. Agora acesse o arquivo login.php no diretório system/login.php, de ctrl+f em $config_salt_enabled = $db->hasColumn('accounts', 'salt');, você vai encontrar isto: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($account_logged->isLoaded() && encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5) ) { setSession('account', $account_logged->getId()); setSession('password', encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password)); if($remember_me) { setSession('remember_me', true); } Aqui vamos remover a criptografia do salt para podermos acessar nossa conta sem utilizar o valor do salt na hora de conferir a senha com o banco de dados. Altere o trecho do código acima pelo seguinte código: $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($account_logged->isLoaded() && encrypt($login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5)) { setSession('account', $account_logged->getId()); setSession('password', encrypt($login_password)); if($remember_me) { setSession('remember_me', true); } } Salve o arquivo, crie 1 nova conta em seu site e tente logar tanto no site quanto no jogo, se o problema era o salt, então ele estará resolvido e você irá conseguir acessar normalmente sua conta tanto no site quanto no jogo. As linhas estão um pouco diferentes, acabou por não funcionar. $config_salt_enabled = fieldExist('salt', 'accounts'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); $password = $password; } e a segunda $config_salt_enabled = fieldExist('salt', 'accounts'); if($account_logged->isLoaded() && encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5) ) { setSession('account', $account_logged->getId()); setSession('password', encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password)); if(isset($_POST['remember_me'])) setSession('remember_me', true); Estou utilizando o myacc 0.7.1 Editado Janeiro 27, 2021 4 anos por cesarfilho55 (veja o histórico de edições)
Postado Janeiro 27, 2021 4 anos Autor 1 minuto atrás, cesarfilho55 disse: As linhas estão um pouco diferentes, acabou por não funcionar. $config_salt_enabled = fieldExist('salt', 'accounts'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); $password = $password; } e a segunda $config_salt_enabled = fieldExist('salt', 'accounts'); if($account_logged->isLoaded() && encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5) ) { setSession('account', $account_logged->getId()); setSession('password', encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password)); if(isset($_POST['remember_me'])) setSession('remember_me', true); A segunda tu deixou criptografando ainda, só deixar assim: $config_salt_enabled = fieldExist('salt', 'accounts'); if($account_logged->isLoaded() && encrypt($login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5) ) { setSession('account', $account_logged->getId()); setSession('password', encrypt($login_password)); if(isset($_POST['remember_me'])) setSession('remember_me', true);
Postado Janeiro 27, 2021 4 anos 6 horas atrás, Endless disse: A segunda tu deixou criptografando ainda, só deixar assim: $config_salt_enabled = fieldExist('salt', 'accounts'); if($account_logged->isLoaded() && encrypt($login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5) ) { setSession('account', $account_logged->getId()); setSession('password', encrypt($login_password)); if(isset($_POST['remember_me'])) setSession('remember_me', true); Resolveu!
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.