Erro de comparação
Ola, sou Raphael e fiz esse código:
<?php
$login = $_POST['textlogin'];
$senha = $_POST['password'];
$con=mysqli_connect("localhost", "root", "senha", "banco de dados");
$confirmacao = mysqli_query($con, "SELECT * FROM usuario WHERE user == '$login' AND senha == '$senha'"); //verifica se o login e a senha conferem
if ($confirmacao)
{
header ("location:adm25896.html");
}
?>
Bom quando eu o fiz queria que ele conferisse se o login e senha digitado era o mesmo do banco de dados e se ele mandaria para outra pagina.
Alguém pode me ajudar por favor ?
<?php
$login = $_POST['textlogin'];
$senha = $_POST['password'];
$con=mysqli_connect("localhost", "root", "senha", "banco de dados");
$confirmacao = mysqli_query($con, "SELECT * FROM usuario WHERE user == '$login' AND senha == '$senha'"); //verifica se o login e a senha conferem
if ($confirmacao)
{
header ("location:adm25896.html");
}
?>
Bom quando eu o fiz queria que ele conferisse se o login e senha digitado era o mesmo do banco de dados e se ele mandaria para outra pagina.
Alguém pode me ajudar por favor ?
Raphael
Curtidas 0
Respostas
William
15/09/2015
Vamos lá Raphael, imagino que vc seja novo no fórum então primeiro vou passar uma dica, quando for postar trechos de código utilize a tag "code":
[img]http://arquivo.devmedia.com.br/forum/imagem/269142-20150916-070523.png[/img]
Quanto ao seu código, não gosto muito da extensão mysqli pois prefiro PDO, mas seguem algumas observações:
Jamais execute querys passando o valor direto na string, principalmente valores que vem direto do usuário, trabalhe sempre parametrizado.
Esse "select *" é uma prática errada, traga somente as colunas que você vai precisar.
Não existe esse operador "==" no MySQL.
Segue o código com algumas alterações:
Para conhecer as parametrizações da extensão mysqli acesse essa página http://php.net/manual/pt_BR/mysqli-stmt.bind-param.php
Documentação oficial do MySQL para operadores http://dev.mysql.com/doc/refman/5.6/en/non-typed-operators.html
[img]http://arquivo.devmedia.com.br/forum/imagem/269142-20150916-070523.png[/img]
Quanto ao seu código, não gosto muito da extensão mysqli pois prefiro PDO, mas seguem algumas observações:
1 - mysqli_query($con, "SELECT * FROM usuario WHERE user == '$login' AND senha == '$senha'");
Jamais execute querys passando o valor direto na string, principalmente valores que vem direto do usuário, trabalhe sempre parametrizado.
2 - "SELECT * FROM usuario WHERE user == '$login' AND senha == '$senha'"
Esse "select *" é uma prática errada, traga somente as colunas que você vai precisar.
3 - WHERE user == '$login' AND senha == '$senha'
Não existe esse operador "==" no MySQL.
Segue o código com algumas alterações:
<?php $login = $_POST['textlogin']; $senha = $_POST['password']; $mysqli = new mysqli('localhost', 'root', 'senha', 'banco'); $stmt = $mysqli->prepare('SELECT campos FROM usuario WHERE user = ? AND senha = ?'); $stmt->bind_param('ss', $email, $senha); $confirmacao = $stmt->execute(); if($confirmacao){ echo "Passou"; }
Para conhecer as parametrizações da extensão mysqli acesse essa página http://php.net/manual/pt_BR/mysqli-stmt.bind-param.php
Documentação oficial do MySQL para operadores http://dev.mysql.com/doc/refman/5.6/en/non-typed-operators.html
GOSTEI 0
Raphael
15/09/2015
Muito Obrigado. E sim sou novo e valeu pela dica.
GOSTEI 0
William
15/09/2015
Depois que vc testar o código dá um retorno, assim finalizamos como resolvido!
GOSTEI 0
Raphael
15/09/2015
William, ele ta passando qual quer pessoa mesmo se a senha ou login estiver errado.
Se tiver como vc me passa skype para me da mais uma ajuda agradeço
Se tiver como vc me passa skype para me da mais uma ajuda agradeço
GOSTEI 0
William
15/09/2015
Então Raphael, meu skype é willfl2, mas aqui na empresa ele não fica ativo e só chego em casa após as 23:00 hs, se quiser me envia a dúvida por e-mail "wllfl@ig.com.br" que chegando a solução postamos aqui.
GOSTEI 0
Raphael
15/09/2015
Ok. Obrigado.
Se poder me ensinar as fazer um esquema de login usando banco de dados mysql fico agradecido.
Se poder me ensinar as fazer um esquema de login usando banco de dados mysql fico agradecido.
GOSTEI 0
Raphael
15/09/2015
Editei o codigo mais agora sempre mostra a mensagem de erro mesmo a senha tando certa ou errada
Codigo:
Codigo:
<?php $login = $_POST['textlgoin']; $senha = $_POST['password']; $conexao = new MySQLi('localhost', 'root', 'senha','db'); $query = mysqli_query($conexao, "SELECT user, senha FROM usuario WHERE user='$login' AND senha='$senha'") or die("erro ao selecionar"); $contagem = mysqli_num_rows($query); if ($contagem == 1) { echo "Conectado!"; } else{ echo "Erro"; } ?>
GOSTEI 0
Raphael
15/09/2015
Editei o codigo mais agora sempre mostra a mensagem de erro mesmo a senha tando certa ou errada
Codigo:
Codigo:
<?php $login = $_POST['textlgoin']; $senha = $_POST['password']; $conexao = new MySQLi('localhost', 'root', 'senha','db'); $query = mysqli_query($conexao, "SELECT user, senha FROM usuario WHERE user='$login' AND senha='$senha'") or die("erro ao selecionar"); $contagem = mysqli_num_rows($query); if ($contagem == 1) { echo "Conectado!"; } else{ echo "Erro"; } ?>
GOSTEI 0
William
15/09/2015
Acabei misturando na postagem a maneira Orientada a Objetos e a Procedural por isso não funcionou, abaixo segue o código funcionando da maneira Orientada a Objetos:
Lembrando que e o correto é trabalhar parametrizado!
Lembrando que e o correto é trabalhar parametrizado!
<?php $login = $_POST['textlgoin']; $senha = $_POST['password']; $conexao = new MySQLi('localhost', 'root', 'senha','db'); $query = $conexao->query("SELECT * FROM usuario WHERE user='$login' AND senha='$senha'"); $contagem = $query->num_rows; if ($contagem == 1) { echo "Conectado!"; } else{ echo "Erro"; } ?>
GOSTEI 0
Raphael
15/09/2015
Muito Obrigado
GOSTEI 0
Raphael
15/09/2015
Mano sempre mostra a mensagem de erro mesmo a senha estando certa
GOSTEI 0
William
15/09/2015
Raphael criei uma tabela só para testar esse script, veja se os dados estão sendo passados corretamente!
GOSTEI 0
Raphael
15/09/2015
Ok. Vou testa aqui.
GOSTEI 0
Raphael
15/09/2015
Fiz a tabela e mostro
GOSTEI 0