Ir para o conteúdo
marciofilipee

Ajuda com erro PHP SQL

Mensagens Recomendadas

marciofilipee

Olá estou com um sistema de login a base de dados estou com este erro

Fatal error: Call to a member function num_rows() on a non-object in /home/marciofi/public_html/login_func.php on line 7

login_func.php o código é o seguinte da linha 7

if($query->num_rows() == 1){ // login com sucesso..

Código completo


< ?php
include 'init.php';
//CONSULTA DO UTILIZADOR

$query = "Select * from clientes where nome='" . $_POST['nome'] . "' and password='" . $_POST['password'] . "'";
$resultado=mysql_query($query);
if($query->num_rows() == 1){ // login com sucesso..

//COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA
$linha=mysql_fetch_array($resultado);
//COLOCA O UTILIZADOR EM SESSAO
$_SESSION['nome']=$linha['nome'];
if($tipo == 0){
// Utilizador faz algo...
header("location: user.php");
}else{
// Administrador faz algo...
header("location: admin.php");
}
} // erro ao efectuar login..
else //CASO NAO COINCIDAM
{
//REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
header("location: login.php?erro=1");
}
?>

Editado por apocsantos
tag code + geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Estás a misturar conceitos diferentes como já referido. No entanto, a variável de identificação está errada.

if($query->num_rows() == 1)         // <-- $query é texto simples..
if(mysql_num_rows($resultado) == 1) // <-- $resultado é a query devolvida pelo MySQL

Editado por bioshock

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
capesone

melhores usar o mysqli e cuidado com o injection

$query = $ligaçao_mysqli -> query("")
$query -> execute();

if(myslqi_num_rows($query)) # passa
else #nao passa

agora nao tenho tempo para mais

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
marciofilipee

Obrigado agora não esotu a conseguir fazer login

código do fórum

<form class="form-inline" form name="login" "method="post" action="login_func.php">
<input type="login" name="nome" class="form-control" placeholder="Nome">
<input type="password" name="password" class="form-control" placeholder="Password">
<button type="submit" value="Login" class="btn btn-default">Entrar</button>
<?php	
if(isset($_GET['erro'])) //SE EXISTIR ERRO	
echo "<font color=\"#FF0000\">Erro no login. Tente novamente.</font>"
?>
</form>

código do login_func.php

<?php
include 'init.php';
//CONSULTA DO UTILIZADOR

	 $consulta = "Select * from clientes where nome='" . $_POST['nome'] . "' and password='" . $_POST['password'] . "'";
$resultado=mysql_query($consulta);

if (mysql_num_rows($resultado)>0) //SE O EMAIL E A PASSWORD COINCIDIREM
{
//COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA
$linha=mysql_fetch_array($resultado);
//COLOCA O EMAIL EM SESSAO
$_SESSION['nome']=$linha['nome'];
//REDIRECCIONA A PAGINA PARA A PAGINA SECRETA
header("location: admin.php");
}
else //CASO NAO COINCIDAM
{
//REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
header("location: login.php?erro=1");
			 }
?>

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
capesone

if (mysql_num_rows($resultado)>0)

nao precisas ai do > 0, se a variavel for 0, o if retorna false, logo sem isso vai funcionar tambem!

Agora 2 perguntas:

Fizeste o session_start?

Na página admin.php tas a validar se a session existe certo?

Se as respostas a essas perguntas sao ambas sim,

Verifica se a $linha[nome] tem algum conteudo la dentro antes de criares o indice da sessão

Editado por capesone

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.