Ir para conteúdo

POWERED BY:

Arquivado

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

§_ladyshaolin_§

com password

Recommended Posts

O que está errado? Por que não consigo criptografar a senha digitada para fazer login? quando cadastrei e pedi pra gravar a senha em password deu tudo certo!<?phpinclude "conecta.php";session_start();$sql = "SELECT * FROM usuario WHERE login='".$_POST["login"]."' AND senha='password(".$_POST["senha"].")'";$resultado= mysql_query($sql) or die ("Erro no banco de dados!"); $linhas = mysql_num_rows($resultado);if($total){$dados = mysql_fetch_array($resultado);$_SESSION["id_usuario"]=$dados["id_usuario"];$_SESSION["nome"]=$dados["nome"];$_SESSION["permissao"]=$dados["permissao"];header("Location:entrada.php");exit;}else{echo "<font face=\"verdana\" size=\"2\"><b><center>Dados de acesso incorretos.</center></b></font>";echo "<font face=\"verdana\" size=\"2\"><b><center><a href=\"index.php\">Voltar</a></center></b></font>";exit;}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

3 coisas:

1) Fica mais legal de ler se tu puseres o código colorido ;)

2) Se tu trocares a linha

PHP [/tr][tr]$resultado= mysql_query($sql) or die ("Erro no banco de dados!"); [/tr]
por
PHP [/tr][tr]$resultado= mysql_query($sql) or die (mysql_error()); [/tr]
tu vais conseguir ler a mensagem de erro que o banco manda e fica mais fácil saber oque está errado ;)

3) Agora respondendo a tua pergunta ... o erro ta na tua query; na parte

senha='password(".$_POST["senha"].")'
password é uma função e não pode estar entre aspas, já $_POST["senha"] é uma string e tem que estar entre aspas, sendo assim o trecho fica
senha=password('".$_POST["senha"]."')
OBS.: Isso serve também pro código que inclui na DB, então dá uma conferida!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmm... não, não funcional e a senha na tabela está criptografada sim!

o código do arquivo de inclusão ficou assim:

 

<?php

include "conecta.php";

$nome=$_POST["nome"];

$senha=$_POST["senha"];

$funcao=$_POST["funcao"];

$login=$_POST["login"];

$permissao=$_POST["permissao"];

 

$sql=mysql_query("INSERT INTO usuario(nome, funcao, login, senha, permissao)VALUES('$nome', '$funcao', '$login', password('$senha'), '$permissao')")

or die("ERRO no comando SQL: ".mysql_error());

 

echo "Usuário cadastrado com sucesso!";

echo "<p><a href=\"cad_usuario.php\">Cadastrar mais usuários </a>";

 

?>

 

tentei modificar o parâmetro password como você especificou e na verdade ele não dá erro no banco de dados, ele segue pra condição de dados incorretos, logo aparece na tela:

 

Dados de acesso incorretos.

Voltar

 

não tô entendendo, acho q estou fazendo algo errado pra capturar a senha certinho...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na linha que diz

PHP [/tr][tr]if ($total)[/tr]
tu não quer dizer
PHP [/tr][tr]if ($linhas)[/tr]
?! Não achei onde tu atribui valor pra variável total...

 

OBS.: Nossa, tu deve ter passado trabalho pra colorir a mão teu código. Desculpa te fazer passar por isso, eu devia ter explicado melhor. No fórum tu pode por teu código PHP entre as tags para coloração de código ... assim teu post ficaria assim:

[php] $texto = 'Olá mundo';echo $texto[/php]
... tomara que eu tenha conseguido me explicar, o texto que estiver dentro de [php\] e [/php\] (troca \] por ]) vai ser colorido automaticamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, percebi esse erro tb! resolvi pegar um tutorial do imasters pra acompanhar passo a passo direitinho mas não adiantou...

 

PHP [/tr][tr]

<?php

include "conecta.php";

session_start();

 

$login=isset($_POST["login"])? addslashes(trim($_POST["login"])):FALSE;

$senha=isset($_POST["senha"])? md5(trim($_POST["senha"])):FALSE;

 

if(!$login || !$senha)

{

echo "Você deve digitar seu login e senha!";

exit;

}

$sql="SELECT * FROM usuario WHERE login=\".$_login.\"";

$resultado=mysql_query($sql) or die("Erro no banco de dados: ".mysql_error());

$total=mysql_num_rows($resultado);

 

if($total)

{

$dados=mysql_fetch_array($resultado);

 

if(!strcmp($senha, $dados["senha"]))

{

$_SESSION["id_user"]=$dados["id_usuario"];

$_SESSION["nome_user"]=$dados["nome"];

$_SESSION["permissao_user"]=$dados["permissao"];

header("Location:entrada.php");

exit;

}

else

{

echo "Senha inválida.";

exit;

}

else

{

echo "Login inválido.";

exit;

}

}

?>

 

[/tr]

 

agora ele acusa:

 

Parse error: parse error in c:\apache\htdocs\guia_util\public\ver_log.php on line 34

 

e a criptografia no cadastro está correta, mudei pra md5, fiz os testes e funcionou, só essa parte da sessão q não quer funcionar!!

 

AFE! Que bagunça!! :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é um errinho chato que normalmente o desenvolvedor não enxerga fácil, mas se tu acompanhar teu código vai ver que o segundo else (o que mostra "Login Inválido") está dentro do bloco do primeiro if. Tirando a parte que mexe com a sessão teu código está assim:

PHP [/tr][tr]if($total)

{

$dados=mysql_fetch_array($resultado);

else

{

echo "Login inválido.";

exit;

}

}

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(!strcmp($senha, $dados["senha"])){$_SESSION["id_user"]=$dados["id_usuario"];$_SESSION["nome_user"]=$dados["nome"];$_SESSION["permissao_user"]=$dados["permissao"];header("Location:entrada.php");exit;}else{echo "Senha inválida.";exit;}else{echo "Login inválido.";exit;}voce num pode fzer issu... soh pode dar 1 'else' !if{}else{}ouif{if{}else{}}else{}Tenta issu:if($total){$dados=mysql_fetch_array($resultado);if(!strcmp($senha, $dados["senha"])){$_SESSION["id_user"]=$dados["id_usuario"];$_SESSION["nome_user"]=$dados["nome"];$_SESSION["permissao_user"]=$dados["permissao"];header("Location:entrada.php");exit;}else{echo "Senha inválida.";exit;}}else{echo "Login inválido.";exit;} ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem nada complexo, teu código tá certo ... o único erro era o seguinte:

um if/else é assim:

PHP [/tr][tr]if ($algumacoisa) {

// faz alguma coisa

// e fecha as chaves

}

else {

// faz outra coisa

}

[/tr]

mas o teu ta assim:

PHP [/tr][tr]if ($total) {

// poe os lances na sessão

// NAO FECHA AS CHAVES

else {

// blablabla

}

[/tr]

é só isso!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não estou enxergando erro:

 

PHP [/tr][tr]

if($total){//abriu1

$dados=mysql_fetch_array($resultado);

 

if(!strcmp($senha, $dados["senha"])){//abriu2

$_SESSION["id_user"]=$dados["id_usuario"];

$_SESSION["nome_user"]=$dados["nome"];

$_SESSION["permissao_user"]=$dados["permissao"];

header("Location:entrada.php");

exit;

}//fechou2

else{//abriu3

echo "Senha inválida.";

exit;

}//fechou3

else{abriu//4

echo "Login inválido.";

exit;

}//fechou4

}//fechou1

[/tr]

não era pra ser assim? http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim

PHP [/tr][tr]

<? ob_start(); ?>

<?

if($total){//abriu1

$dados=mysql_fetch_array($resultado);

 

if(!strcmp($senha, $dados["senha"])){//abriu2

session_start();

$_SESSION["id_user"]=$dados["id_usuario"];

$_SESSION["nome_user"]=$dados["nome"];

$_SESSION["permissao_user"]=$dados["permissao"];

header("Location:entrada.php");

exit;

}//fechou2

else{//abriu3

echo "Senha inválida.";

exit;

}//fechou3

else{abriu//4

echo "Login inválido.";

exit;

}//fechou4

}//fechou1

?>

<? ob_end_flush(); ?>

[/tr]

 

 

 

T+ :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei mas continua acusando:

 

Parse error: parse error in c:\apache\htdocs\guia_util\public\ver_log.php on line 25

 

só mudou a linha de 34 para 25...

 

tem como eu deixar isso num if só e não importa qdo. a senha ou o login estiverem incorretos ele apresenta uma msg só? :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ufa!!! Bem + simples e funcional assim!! Ainda assim obrigada a todos vcs que aturaram essa chata iniciante!! ^_^

 

PHP [/tr][tr]

<?php

include "conecta.php";

$login=$_POST["login"];

$senha=$_POST["senha"];

 

$seleciona = mysql_query("SELECT * FROM usuario WHERE login = '$login' AND senha = md5('$senha')");

$dados = mysql_fetch_array($seleciona);

 

If (($dados["login"] == "") OR ($dados["senha"] == "")) {

header("Location:invalido.html");

}

 

else {

session_start();

$_SESSION["id_user"]=$dados["id_usuario"];

$_SESSION["nome_user"]=$dados["nome"];

$_SESSION["permissao_user"]=$dados["permissao"];

header("Location:entrada.php");

}

?>

[/tr]

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.