Ir para conteúdo

POWERED BY:

Arquivado

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

demosthenesvalois

Criptografia com o md5

Recommended Posts

Boa tarde,

 

Estou com o seguinte problema eu estou fazendo um sistema para a minha empresa e estou preso na parte de login e senha antes sem colocar nada para criptografar a senha quando o usuário fazia um novo cadastro o banco de dados não salvava o campo "senha" salvava os demais campos mas a senha ele não salvava.

Ai configurei em md5 só que agora o usuario não consegue mais logar ele faz o cadastro a senha é salva criptografada no banco de dados mas quando o usuário vai logar da a mensagem "Login e/ou senha incorretos".

Como resolver esse problema alguém pode me ajudar?

 

 

Grato

 

Demosthenes Valois

Compartilhar este post


Link para o post
Compartilhar em outros sites

md5 não é criptografia é hash.

De uma olhada em passwords hashing. Entretanto é somente para PHP 5.5+. Caso for outra versão de php, olhe hash.

 

Basicamente hash é do tipo one-way, ou seja, uma via. Só pode ser criado um hash correspondente a um string e, então, quando inserido o password, deve ser utilizado o mesmo algoritmo de hash e verificar a hash do password com o hash salvo no login do usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que eu estou aprendendo php agora tem um mês que eu comecei a trabalhar e ainda não entendo muito bem.

Como por exemplo como eu vou comparar as senhas eu tenho que pré definir uma senha no meu codigo?

 

No meu código eu insiro a senha do arquivo "cadastro.php"

 

<?php
$matricula = $_POST['matricula'];
$nome = $_POST['nome'];
$login = $_POST['login'];
$senha = md5($_POST['senha']);
$servidor = "127.0.0.1";
$usuario = "root";
$senhabanco = "";
$banco = "sistemadeponto";
$connect = mysqli_connect($servidor,$usuario,$senhabanco,$banco);
$query_select = "SELECT * FROM usuario WHERE login = '$login' AND senha=md5('$senha')";
$select = mysqli_query($connect,$query_select);
$logarray = $array['login'];
if($login == "" || $login == null){
echo"<script language='javascript' type='text/javascript'>alert('O campo login deve ser preenchido');window.location.href='cadastro.html';</script>";
}else{
if($logarray == $login){
echo"<script language='javascript' type='text/javascript'>alert('Esse login já existe');window.location.href='cadastro.html';</script>";
die();
}else{
$query = "INSERT INTO usuario (matricula,nome,login,senha) VALUES ('$matricula','$nome','$login','$senha')";
$insert = mysqli_query($connect,$query);
if($insert){
echo"<script language='javascript' type='text/javascript'>alert('Usuário cadastrado com sucesso!');window.location.href='index.html'</script>";
}
else{
echo"<script language='javascript' type='text/javascript'>alert('Não foi possível cadastrar esse usuário');window.location.href='cadastro.html'</script>"; } } }
?>

e autentico no "login.php"

 

<?php

$entrar = ['entrar'];
$nome = $_POST['nome'];
$login = $_POST['login'];
$senha = md5($_POST['senha']);
$matricula = $_POST['matricula'];
$connect = mysqli_connect('127.0.0.1','root','','sistemadeponto');
$res = "SELECT id,nome,matricula FROM usuario WHERE login = '$login' AND senha = md5('$senha')";
$array = mysqli_fetch_array($res);
if (isset($entrar))
{
$verifica = mysqli_query($connect, $res) or die(mysqli_error());
if (mysqli_num_rows($verifica)<=0){
echo"<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');window.location.href='index.html';</script>"; die();
}else{
header("Location:index.php"); } }
?>

meu código está assim não sei se está certo qualquer ajuda é bem vinda desde já muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi eu tirei o md5 da query e só deixei ao criar a variável e deixei o md5 no arquivo "login.php" também

 

Aconteceu o seguinte eu realizo um novo cadastro ele castra tudo direitinho no banco de dados ele não da mais a mensagem de "Login e\ou senha incorreto"

 

Só que quando vou logar ele aceita qualquer senha eu posso colocar qualquer coisa como senha que ele aceita

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre como ficou seu código. Poste-o usando a tag CODE, não QUOTE. Assim fica melhor formatado

 

Este trecho não faz sentido:

 

$res = "SELECT id,nome,matricula FROM usuario WHERE login = '$login' AND senha = md5('$senha')";
$array = mysqli_fetch_array($res);

 

mysqli_fetch_array deve ser usada com o retorno de mysqli_query, não com uma string.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse trecho eu queria que ele puxasse do banco o nome e a matricula para exibir quando ele logasse não sabia que o mysqli_fecth_array não sabia que não podia ser usada com string.

 

meu código "cadastrar.php" ficou assim

<?php 
$matricula = $_POST['matricula'];
$nome = $_POST['nome'];
$login = $_POST['login'];
$senha = md5($_POST['senha']);

$servidor = "127.0.0.1";
$usuario = "root";
$senhabanco = "";
$banco = "sistemadeponto";
$connect = mysqli_connect($servidor,$usuario,$senhabanco,$banco);

$query_select = "SELECT * FROM usuario WHERE login = '$login' AND senha='$senha'";
$select = mysqli_query($connect,$query_select);
$logarray = $array['login'];


if($login == "" || $login == null){ 
echo"<script language='javascript' type='text/javascript'>alert('O campo login deve ser preenchido');window.location.href='cadastro.html';</script>";
}else{ 
if($logarray == $login){ 
 echo"<script language='javascript' type='text/javascript'>alert('Esse login já existe');window.location.href='cadastro.html';</script>";
 die(); 
 }else{ 
$query = "INSERT INTO usuario (matricula,nome,login,senha) VALUES ('$matricula','$nome','$login','$senha')";
$insert = mysqli_query($connect,$query); 
 if($insert){ 
	echo"<script language='javascript' type='text/javascript'>alert('Usuário cadastrado com sucesso!');window.location.href='index.html'</script>";
 }
 else{ 
 echo"<script language='javascript' type='text/javascript'>alert('Não foi possível cadastrar esse usuário');window.location.href='cadastro.html'</script>"; } } }
 ?>

e o "login.php" ficou assim

<?php 
$entrar = ['entrar'];
$nome = $_POST['nome'];
$login = $_POST['login'];


$senha = md5($_POST['senha']);

$matricula = $_POST['matricula'];

$connect = mysqli_connect('127.0.0.1','root','','sistemadeponto');



$res = "SELECT id,nome,matricula FROM usuario WHERE login = '$login' AND senha = '$senha'";
$array = mysqli_fetch_array($res);

if (isset($entrar))
{ 
$verifica = mysqli_query($connect, $res) or die(mysqli_error());
    if (mysqli_num_rows($verifica)<=0){ 
	echo"<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');window.location.href='index.html';</script>"; die(); 
	}else{ 
	header("Location:index.php"); } } 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habilite todas as exibições de erro como mostrado neste tópico. Isso vai apontar alguns erros para você corrigir. Dentre eles o do mysqli_fetch_array.

 

Remova esta linha. Ela não serve para nada da forma como está:

 

$array = mysqli_fetch_array($res);

 

 

Este if também não serve para nada. Você definiu a variável $entrar no topo do script. Ou seja, o isset sempre retornará true. Não entendi seu objetivo com esse if.

 

if (isset($entrar))

 

 

Sobre o problema com o login, tente verificar qual foi o dado retornado.

Para isso, troque esta linha:

 

header("Location:index.php");

 

por isto:

 

$row = mysqli_fetch_array($verifica, MYSQLI_ASSOC);
print_r($row);

aqui sim você usa mysqli_fetch_array, para buscar os resultados retornados pelo mysqli_query

Mais detalhes aqui: http://php.net/manual/pt_BR/mysqli-result.fetch-array.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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