Ir para conteúdo

Arquivado

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

Thiago Duarte

Cadastro não funciona

Recommended Posts

2 horas atrás, 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.

 

1 hora atrás, 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 21/12/2017 at 23: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 03: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
15 minutos atrás, 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.

 

17 minutos atrás, 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 18: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 14: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 ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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