Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Duarte

Cadastro não funciona

Recommended Posts

  Em 16/12/2017 at 07:36, Thiago Duarte disse:

No index tu colocou 

 

require_once("classUser.php");

Que classUser.php é essa?

 

Não entendi bem como funciona esse password_hash() ... eu teria que substituir onde? isso? $senha = $_POST['senha'];

 

Como iria ficar?

 

Obrigado pela ajuda amigo 

Essa é a classe do login, poem o nome do arquivo onde ta a classe Login que te passei "classLogin.php".

Sobre o password_hash, você só teria que adicionar password_hash() na hora do REGISTRO do usuário. aí ficaria dessa forma:

$senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT);

na hora do LOGIN do usuário não precisa usar password_hash, usa só:

$senha = $_POST['senha']

Pq a partir daí quem vai fazer a verificação é a password_verify(), que está no método Logar(). Pode reparar que na index.php eu passo a senha "pura" no método logar: $user_login->logar($email,$upass), aí quem faz a validação na senha lá dentro é a password_verify.

 

Sobre $_POST['pass'] aí embaixo, ele não vai puxar a "pass" do seu banco de dados, ele ta puxando "pass" do formulário que ta ali embaixo na index.php pra enviar pra validação no método logar, você pode ver lá no começo da index.php o que eu faço com $upass, eu passo ele pra $user_login->logar($email , $upass) pra fazer a validação.

 

  Em 16/12/2017 at 07:49, Thiago Duarte disse:

No seu exemplo tem isso? 

$upass = $_POST['pass'];

não existe no meu banco de dados campo chamado "pass"

 

A partir do momento que você passar a entender o funcionamento desse código, já era, você consegue adaptar ele em qualquer site de forma simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha senha fica da forma que cadastrei... exemplo: 1234567 no banco fica: 1234567

 

queria cadastrar 1234567 e ficar algo parecido com: C7Dq$?u)cc`*`#Zf

 

Isso "password_hash" na hora do cadastro que faz ficar dessa forma? 

$senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente, na hora do cadastro quando usar o password_hash a sua senha vai ficar dessa forma como você deu de exemplo, só que vai ficar um pouco maior, vai ficar assim:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

Usa password_hash somente na hora do cadastro, depois não precisa. Pra fazer a verificação da senha, você usa assim:

$senha_via_formulario = "aloalolululu123"; // senha que o usuário preencheu no form pra fazer login

$senha_que_esta_no_banco = $row['pass']; // senha do seu banco

 

if(password_verify($senha_via_formulario , $senha_que_esta_no_banco)){

 echo "opa, entrei";

} else {

echo "ops, dados incorretos";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fui fazer daquela forma que você me disse pra cadastrar e deu erro haha

<?php
$servidor = 'localhost'; 
$banco    = 'tutorialloginphp'; 
$usuario  = 'root'; 
$senhadb  = ''; 

try{
    $PDO = new PDO("mysql:host=" . $servidor . ";dbname=" . $banco , $usuario , $senhadb);
    $PDO->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
    echo "erro : " . $e->getMessage();
}

$email = $_POST['email'];
$senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT);

// insere no banco
$stmt = $PDO->prepare("INSERT INTO usuario (email, senha) VALUES (:email, :senha)");
$stmt->bindParam(':email', $email);
$stmt->bindParam(':senha', $senha);
$stmt->execute();
 
if ($stmt->rowCount() > 0)
{
    header('Location: welcome.php');
}
else
{
    echo "Erro ao cadastrar";
    print_r($stmt->errorInfo());
}

?>

Coloquei isso $senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT); 

no lugar de $senha = $_POST['senha'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei aqui o código e ta funcionando normalmente, após o cadastro ele redireciona pra welcome.php e o password_hash ta registrando a senha. Qual erro apareceu pra você?

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 22/12/2017 at 07:41, BrunoMs disse:

Testei aqui o código e ta funcionando normalmente, após o cadastro ele redireciona pra welcome.php e o password_hash ta registrando a senha. Qual erro apareceu pra você?

 

Fatal error: Call to undefined function password_hash() in C:\wamp\www\php-login\action_cliente.php on line 16

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente a versão do seu PHP é  inferior à versão 5.5 e o password_hash e password_verify só estão disponíveis na versão 5.5. Abre algum arquivo aí no seu servidor e dá um echo nisso aqui pra você ver a versão atual do seu PHP:

echo phpinfo();

O meu por exemplo é esse: PHP Version 5.5.12

Quando você der o echo aí vai aparecer no topo a versão atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 25/12/2017 at 11:42, BrunoBit disse:

Então é isso mesmo, é só atualizar pro 5.5 ou superior que o password_hash e password_verify vão funcionar normalmente.

 

Como faço pra atualizar?

 

Quando o subir meus arquivos pro servidor também não vão funcionar se o PHP do servidor estiver desatualizado?

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 29/12/2017 at 21:42, Thiago Duarte disse:

Como faço pra atualizar?

 

Geralmente os servidores de hospedagem tem uma sessão pra selecionar a versão do PHP na hospedagem, aí é só você alterar pra 5.5 ou superior.

 

  Em 29/12/2017 at 21:42, Thiago Duarte disse:

Quando o subir meus arquivos pro servidor também não vão funcionar se o PHP do servidor estiver desatualizado?

 

Isso, se for inferior à 5.5 não vai funcionar o password_hash e nem o password_verify, mas hoje em dia é recomendável usar a versão 5.5 ou superior, quanto mais atualizado melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa, então não tem como usar md5 pra criptografia para não ter esse tipo de problema? num funciona com versão mais antiga do PHP?

 

Obrigado pela ajuda amigo :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim, é só tirar o password_verify() lá da classe login que te passei.

Troca isso:

if(password_verify($upass , $row['suacolunasenha'])){

Por isso:

if(md5($upass) == $row['suacolunasenha']){

Na hora de fazer o login é só fazer assim:

$email = $_POST['email'];
$upass = $_POST['pass'];

$user_login->logar($email,$upass);

O "problema" é que pra logins o password_verify/password_hash é muito mais recomendável e muito mais seguro, mas aí vai de você e da sua necessidade, se quiser passar pra md5 é só alterar essas linhas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 30/12/2017 at 20:43, Thiago Duarte disse:

Poxa, então não tem como usar md5 pra criptografia para não ter esse tipo de problema? num funciona com versão mais antiga do PHP?

 

Obrigado pela ajuda amigo :)

 

Mau lhe pergunte.. Porque tanta preocupação na segurança de senha uma vez que quer utilizar uma versão anterior a versão 7 do php?

Como o bruno disse atualize seu sistema, e sem dúvida nem pense em nada abaixo do PHP 7

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 30/12/2017 at 22:55, BrunoBit disse:

Tem sim, é só tirar o password_verify() lá da classe login que te passei.

Troca isso:

if(password_verify($upass , $row['suacolunasenha'])){

Por isso:

if(md5($upass) == $row['suacolunasenha']){

Na hora de fazer o login é só fazer assim:

$email = $_POST['email'];
$upass = $_POST['pass'];

$user_login->logar($email,$upass);

O "problema" é que pra logins o password_verify/password_hash é muito mais recomendável e muito mais seguro, mas aí vai de você e da sua necessidade, se quiser passar pra md5 é só alterar essas linhas.

 

Se eu quiser no cadastro definir "cliente" e "designer" e colocar no botão input radio  "1" para cliente e "2" para designer

 

Na pagina inicial queria colocar o menu diferente no topo diferente dos dois, como faço isso?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.