Solucionado (ver solução)
Solucionado
(ver solução)
12
respostas

Senha do usuário não fica completa.

Boa tarde .

Na aula de validação de usuário eu gerei a chave e inseri no banco. O problema é que aparentemente não está ficando completa.

vendor\bin\doctrine dbal:run-sql "INSERT INTO usuarios (email,senha) VALUES ('meu@email.com','$argon2i$v=19$m=65536,t=4,p=1$WWl0dEZ2VXBybVRSbnZkTw$qa/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLIWkqXSc')"

array(1) {
  [0]=>
  array(3) {
    ["id"]=>
    string(1) "7"
    ["email"]=>
    string(17) "meu@email.com"
    ["senha"]=>
    string(58) "=19=65536,t=4,p=1/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLIWkqXSc"
  }
}
12 respostas

Oi Wilson, tudo bom?

No php, quando colocamos '$' nas strings estamos dizendo para a lingugem que estamos usando uma variável. No seu caso, temos 5 "variáveis" por acidente:

$argon2i
$v
$m
$WWl0dEZ2VXBybVRSbnZkTw
$qa

E são justamente esses os valores que sumiram da sua senha =)

Você pode trocar por um hash mais tranquilo (sem cifrões) ou escapar esses valores com \ antes. Algo como:

\$argon2i\$v=19$m=65536,t=4,p=1\$WWl0dEZ2VXBybVRSbnZkTw\$qa/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLIWkqXSc

Assim, dizemos pro PHP que esses cifrãos em específico não devem ser interpretados como variáveis =)

Abraço

Oi André , tudo bem e você. Obrigado pela resposta. Eu segui exatamente o que o Vinícius intrutor do curso fez no vídeo. E o problema não está no php e sim quando faço o inset no SQLite. Eu tentei mudar o padrão do hash do password_hash() para PASSWORD_BCRYPT Que não gera variáveis e mesmo assim comeu metade da senha.

Fala, Wilson. Seu problema é bem simples de resolver, cara.

É só digitar o comando exatamente como eu fiz: rodeado por apóstrofes (aspas simples).

vendor\bin\doctrine dbal:run-sql 'INSERT INTO usuarios (email,senha) VALUES ("meu@email.com", "$argon2i$v=19$m=65536,t=4,p=1$WWl0dEZ2VXBybVRSbnZkTw$qa/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLIWkqXSc")'

Vinicius tudo bem??

Consegui invertendo as aspas simples com as duplas. Mais para conseguir manter as aspas duplas dentro do insert tive que escapar com \ .

Agora gostaria de saber porque eu precisei escapar as aspas duplas e você não ??

Manda um print aí do seu erro, Wilson?

Você digitou exatamente igual a mim?

É isso que acontece quando tento executar o sql.

vendor\bin\doctrine dbal:run-sql 'INSERT INTO usuarios (email,senha) VALUES ("meu@email.com", "$argon2i$v=19$m=65536,t=4,p=1$WWl0dEZ2VXBybVR
>> SbnZkTw$qa/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLIWkqXSc")'

In AbstractSQLiteDriver.php line 59:

  An exception occurred while executing 'INSERT INTO usuarios (email,senha) VALUES (meu@email.com, $argon2i$v=19$m=65536,t=4,p=1$WWl0dEZ2VXBybVR':

  SQLSTATE[HY000]: General error: 1 near "@email": syntax error


In PDOConnection.php line 43:

  SQLSTATE[HY000]: General error: 1 near "@email": syntax error


In PDOConnection.php line 41:

  SQLSTATE[HY000]: General error: 1 near "@email": syntax error


dbal:run-sql [--depth DEPTH] [--force-fetch] [--] <sql>

Fala, Wilson.

Porque tem um >> entre as linhas no meio da sua senha?

Manda um print pra eu ver exatamente como foi executado?

:-)

Deve ter sido na hora que copiei e colei. Agora sim !! Segue o código sem enter.

vendor\bin\doctrine dbal:run-sql 'INSERT INTO usuarios (email,senha)VALUES("meu@email.com","$argon2i$v=19$m=65536,t=4,p=1$WWl0dEZ2VXBybVRSbnZkTw$qa/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLIWkqXSc")'

In AbstractSQLiteDriver.php line 59:

  An exception occurred while executing 'INSERT INTO usuarios (email,senha) VALUES (meu@email.com, $argon2i$v=19$m=65536,t=4,p=1$WWl0dEZ2VXBybVRSbnZkTw$qa/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLI
  WkqXSc)':

  SQLSTATE[HY000]: General error: 1 near "@email": syntax error


In PDOConnection.php line 43:

  SQLSTATE[HY000]: General error: 1 near "@email": syntax error


In PDOConnection.php line 41:

  SQLSTATE[HY000]: General error: 1 near "@email": syntax error

Wilson, vou ser muito sincero com você. Não sei porquê suas aspas duplas estão sendo removidas. rsrsrsrs

Nunca tive esse problema.

Faz isso, abre um novo tópico específico pra essa dúvida pra ver se algum outro aluno ou instrutor já passou por isso.

Vê também se você consegue essa resposta em outros fóruns. Se conseguir, me conta porque agora eu fiquei curioso também.

kkkkkkkk

Fiz um teste aqui assim: ( a tabela que eu criei ficou um pouco diferente, mas o importante é a ideia )

$senha = '$argon2i$v=19$m=65536,t=4,p=1$WWl0dEZ2VXBybVRSbnZkTw$qa/KztgG9vP8BX3kBVkKzF5aZqdH62nsOQnLIWkqXSc' ;

$sql = "INSERT INTO usuario (usuario, senha)
VALUES ('meu@email.com', '$senha')";

Passei a senha em uma variável com aspas simples e fiz o insert da variável.

Assim te ajudaria a melhorar o código ?

solução!

Oi Gente, algo que pode acontecer é como o terminal em si trata o texto passado como parametro. Isso por que a interpretação do valor pode ser bem diferente por que cada S.O tem sua forma particular de tratar os dados.

Eu não sei que sistemas cada um tá usando e em que versões, mas pode acontecer isso. Já passei por algo assim. :)