viper33 Postado Dezembro 30, 2008 Denunciar Share Postado Dezembro 30, 2008 Tenho o seguinte form de login<table width="50%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#efefef" class="fundo"><tr><th width="34%" scope="col"> </th><th height="41" scope="col"><span class="fonte">CONTROLE DE ACESSO</span></th></tr><tr><th width="34%" scope="col"><img src="img/Cadeado.png" width="128" height="128" alt="cadeado" /></th><td align="center"><form action="confirma_login.php" method="post" name="form_login" target="" id="login"><p><label><span class="fonte">Usuário</span><input type="text" name = "login" id="login" size="20" maxlength="20" /></label></p><p><label><span class="fonte">Senha</span><input type="password" name = "senha" id="senha" size="20" maxlength="20" /></label></p><p><label><input type="submit" name="Enviar" id="Enviar" value="Enviar" /><input type="submit" name="Cancelar" id="Cancelar" value="Cancelar" /></label></p></form></td></tr><tr><th scope="col"> </th><td align="center"></td></tr></table>E o form de confirmação de login abaixo:<?php$login = @$_POST['login'];$senha = @$_POST['senha'];include ("conexao.php");$resultado= mysql_query ("SELECT * FROM tbusu WHERE login='$login'");$linhas = mysql_num_rows ($resultado);if ($linhas==0){echo "<html><body>"; echo "<p align =\"center\">Esse usuário não existe!<p>";echo "<p align =\"center\"><a href =\"login.php\">Voltar</a></p>";echo "</body></html>"; }else{if($senha != mysql_result($resultado,0,"senha")){echo "<html><body>"; echo "<p align =\"center\">A senha está incorreta!<p>";echo "<p align =\"center\"><a href =\"login.php\">Voltar</a></p>";echo "</body></html>"; }else{setcookie ("login",$login);setcookie ("senha",$senha);header ("location: index.php");}}Mas sempre dá a mensagem que a senha está incorreta. Onde estou errando?A senha existe no banco e estou digitando-a corretamente.Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 30, 2008 Denunciar Share Postado Dezembro 30, 2008 Dá um echo no mysql_result($resultado,0,"senha") para ver o que está vindo do banco... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viper33 Postado Dezembro 30, 2008 Autor Denunciar Share Postado Dezembro 30, 2008 Dá um echo no mysql_result($resultado,0,"senha") para ver o que está vindo do banco...Serra, eu fiz o que você falou mas deu a mesma mensagem e o echo no mysql não retornou nada.Mas testei o sql da seguinte forma no banco e aparece o resultado: SELECT * FROM `tbusu` WHERE login = "malccsi";Parece que o erro está no sql do form: "SELECT * FROM tbusu WHERE login='$login'"Alguma outra sugestão?Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 30, 2008 Denunciar Share Postado Dezembro 30, 2008 Se o echo do mysql não retornou nada então está correto o if falhar...Troque isso:$resultado= mysql_query ("SELECT * FROM tbusu WHERE login='$login'");$linhas = mysql_num_rows ($resultado);Por isso:$resultado= mysql_query ("SELECT * FROM tbusu WHERE login='$login'");$linhas = mysql_num_rows ($resultado);$dados = mysql_fetch_assoc($resultado);print_r($dados);exit;Isso vai fazer com que tudo que está vindo na query seja exibido... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viper33 Postado Dezembro 30, 2008 Autor Denunciar Share Postado Dezembro 30, 2008 Se o echo do mysql não retornou nada então está correto o if falhar...Troque isso:$resultado= mysql_query ("SELECT * FROM tbusu WHERE login='$login'");$linhas = mysql_num_rows ($resultado);Por isso:$resultado= mysql_query ("SELECT * FROM tbusu WHERE login='$login'");$linhas = mysql_num_rows ($resultado);$dados = mysql_fetch_assoc($resultado);print_r($dados);exit;Isso vai fazer com que tudo que está vindo na query seja exibido...Coloquei o que me passou e continuou da mesma forma. Fiz um teste digitando um login que não existe no banco e retorna a mensagem de que esse usuário não existe. Ou seja, até essa parte deu certo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 30, 2008 Denunciar Share Postado Dezembro 30, 2008 Antes da gente tentar arrumar tem que descobrir o problema, nada do que eu te passei até agora é pra resolver o problema e sim é pra encontrar onde está o erro, o print_r($dados); deve ter retornando um monte de coisas na tela, preciso disso pra saber o que está vindo do banco de dados... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viper33 Postado Dezembro 31, 2008 Autor Denunciar Share Postado Dezembro 31, 2008 Antes da gente tentar arrumar tem que descobrir o problema, nada do que eu te passei até agora é pra resolver o problema e sim é pra encontrar onde está o erro, o print_r($dados); deve ter retornando um monte de coisas na tela, preciso disso pra saber o que está vindo do banco de dados...Ok Serra. É que estou praticando o PHP porque preciso conhecer a linguagem. E você tem razão. Retornou isso aqui: Array ( [cdusu] => 1 [nmusu] => Wiliam Bonner [login] => malccsi [senha] => sistemas )Quando coloco echo mysql_result($resultado,0,"senha"); aparece a senha que está no banco mas exibe a mensagem de senha incorreta!GratoEstou usando esse script para o banco:CREATE TABLE `tbusu` ( `cdusu` int(11) NOT NULL auto_increment, `nmusu` varchar(40) NOT NULL, `login` varchar(20) NOT NULL, `senha` varchar(20) NOT NULL, PRIMARY KEY (`cdusu`), UNIQUE KEY `login` (`login`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 31, 2008 Denunciar Share Postado Dezembro 31, 2008 Troca isso:echo "<html><body>";echo "<p align =\"center\">A senha está incorreta!<p>";Por isso:echo "<html><body>";echo "Senha do formulário: |".$senha."|<br>Senha do banco: |".mysql_result($resultado,0,"senha")."|";echo "<p align =\"center\">A senha está incorreta!<p>"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viper33 Postado Dezembro 31, 2008 Autor Denunciar Share Postado Dezembro 31, 2008 Deu isso aqui:sistemasSenha do formulário: ||Senha do banco: |sistemas|A senha está incorreta!Voltar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 31, 2008 Denunciar Share Postado Dezembro 31, 2008 A senha do formulário não está sendo resgatada...Após o $senha = @$_POST['senha'];Coloque print_r($_POST); para ver tudo que está vindo por POST... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viper33 Postado Dezembro 31, 2008 Autor Denunciar Share Postado Dezembro 31, 2008 (editado) Array ( [login] => malccsi [senha] => sistemas [Enviar] => Enviar ) Senha do formulário: ||Senha do banco: |sistemas|A senha está incorreta! Editado Dezembro 31, 2008 por viper33 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viper33 Postado Dezembro 31, 2008 Autor Denunciar Share Postado Dezembro 31, 2008 (editado) Acho que consegui resolver:Na minha conexão eu usava uma variável chamada $senha e uma variável $senha no form de verificação de login. Acho que a confusão estava aí. Troquei o name da senha do formulário de envio e funcionou. Mas...no formulário de confirmação de login agora aparece o erro do cabeçalho que eu ainda não entendi como resolver:Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\SICC Serra\confirma_login.php:7) in C:\xampp\htdocs\SICC Serra\confirma_login.php on line 44Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\SICC Serra\confirma_login.php:7) in C:\xampp\htdocs\SICC Serra\confirma_login.php on line 45Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\SICC Serra\confirma_login.php:7) in C:\xampp\htdocs\SICC Serra\confirma_login.php on line 46Essas linhas são: setcookie ("login",$login); setcookie ("password",$password); header ("location: index.php"); Editado Dezembro 31, 2008 por viper33 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viper33 Postado Janeiro 2, 2009 Autor Denunciar Share Postado Janeiro 2, 2009 Finalmente resolvido:O problema estava nesse cabeçalho do formulário de confirmação de login:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Untitled Document</title>Depois que retirei esse código finalmente funcionou. Como eu estava trabalhando com 3 forms não conseguia entender direito o tal cabeçalho: quando definia header("location:./index.php"); eu pensava que a mensagem de erro que o PHP exibia, vinha do cabeçalho da página index.Grato.Observação: não deixem também nenhum espaço em branco antes do código PHP do formulário que recebe os dados. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
viper33
Tenho o seguinte form de login
<table width="50%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#efefef" class="fundo">
<tr>
<th width="34%" scope="col"> </th>
<th height="41" scope="col"><span class="fonte">CONTROLE DE ACESSO</span></th>
</tr>
<tr>
<th width="34%" scope="col"><img src="img/Cadeado.png" width="128" height="128" alt="cadeado" /></th>
<td align="center"><form action="confirma_login.php" method="post" name="form_login" target="" id="login">
<p>
<label><span class="fonte">Usuário</span>
<input type="text" name = "login" id="login" size="20" maxlength="20" />
</label>
</p>
<p>
<label><span class="fonte">Senha</span>
<input type="password" name = "senha" id="senha" size="20" maxlength="20" />
</label>
</p>
<p>
<label>
<input type="submit" name="Enviar" id="Enviar" value="Enviar" />
<input type="submit" name="Cancelar" id="Cancelar" value="Cancelar" />
</label>
</p>
</form></td>
</tr>
<tr>
<th scope="col"> </th>
<td align="center"></td>
</tr>
</table>
E o form de confirmação de login abaixo:
<?php
$login = @$_POST['login'];
$senha = @$_POST['senha'];
include ("conexao.php");
$resultado= mysql_query ("SELECT * FROM tbusu WHERE login='$login'");
$linhas = mysql_num_rows ($resultado);
if ($linhas==0)
{
echo "<html><body>";
echo "<p align =\"center\">Esse usuário não existe!<p>";
echo "<p align =\"center\"><a href =\"login.php\">Voltar</a></p>";
echo "</body></html>";
}
else
{
if($senha != mysql_result($resultado,0,"senha"))
{
echo "<html><body>";
echo "<p align =\"center\">A senha está incorreta!<p>";
echo "<p align =\"center\"><a href =\"login.php\">Voltar</a></p>";
echo "</body></html>";
}
else
{
setcookie ("login",$login);
setcookie ("senha",$senha);
header ("location: index.php");
}
}
Mas sempre dá a mensagem que a senha está incorreta. Onde estou errando?
A senha existe no banco e estou digitando-a corretamente.
Grato.
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.