Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com mysql_fetch_assoc


Rogério Yokoi

Pergunta

Eis o erro que me aparece toda hora que tento logar

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\WEBSERVER\xampp\htdocs\SplitSistemas.com.br\admin\security.php on line 43

Warning: Cannot modify header information - headers already sent by (output started at D:\WEBSERVER\xampp\htdocs\SplitSistemas.com.br\admin\security.php:43) in D:\WEBSERVER\xampp\htdocs\SplitSistemas.com.br\admin\valida.php on line 13

Aqui vai os códigos que estou usando.

index.php

<?php 
include('security.php');
restrito();
?>

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>
<?php echo "Olá, " . $_SESSION['usuarioNome']; ?>

</body>
</html>
login.php
<?php 
include 'security.php';
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>..:: Split Sistemas e Soluções LTDA ::.. Uberaba - MG</title>
<link rel="shortcut icon" href="../imagens/icone/favicon.ico" type="image/x-icon" />
<link href="../css/admin.css" rel="stylesheet" type="text/css"/>
</head>
<body>

<div id="bs_login">
    <div id="bs_user">
        <div id="restrito">Area Restrita</div>
        <div id="logon">
        <li><span class="erro"><?php echo $mensagem ?></span></li>
            <form method="post" action="valida.php">
            <li>Usuário:</li>
            <li><input type="text" class="input" name="usuario"/></li>
            <li>Senha:</li>
            <li><input type="password" class="input" name="senha"/></li>
            <li>
                <input type="submit" value="Logar" class="btnlogar" name="botao"/>
            </li>
            </form>
        </div>
    </div>
</div>

</body>
</html>
valida.php
<?php
// Inclui o arquivo com o sistema de segurança
include("security.php");
// Verifica se um formulário foi enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Salva duas variáveis com o que foi digitado no formulário
// Detalhe: faz uma verificação com isset() pra saber se o campo foi preenchido
$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
$senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';
// Utiliza uma função criada no seguranca.php pra validar os dados digitados
if (validaUsuario($usuario, $senha) == true) {
// O usuário e a senha digitados foram validados, manda pra página interna
    header ("Location: index.php");
} else {
// O usuário e/ou a senha são inválidos, manda de volta pro form de login
// Para alterar o endereço da página de login, verifique o arquivo seguranca.php
expulsaVisitante();
}
}
?>
security.php
<?php
abreSessao();

//Dados e informações de uso global
$_SSC['servidor']        = "localhost";        //Endereço do servidor onde está armazenado o banco de dados
$_SSC['usuario']         = "root";            //Nome de usuário de conexão ao banco de dados
$_SSC['senha']           = "2783yokoi";        //Senha utilizada para conectar ao banco de dados
$_SSC['nomeBanco']       = "splitsistemas"; //Nome do banco de dados
$_SSC['tabelaLogin']     = "usuario";        //Tabela de dados para login
//Outros dados para utilização
$_SSC['paginaLogin']     = "login.php";     //Página onde contém os campos para entrar no sistema
$_SSC['abreSessao']      = true;            //Valida a opção de sempre criar uma seção caso não exista ainda
$_SSC['validaPagina']    = true;            //Valida os dados de login em todas as páginas
$_SSC['conectaServidor'] = true;            //Valida para conectar ao servidor
$_SSC['logout']          = true;           //Faz o logout do sistema

// Verifica se precisa fazer a conexão com o MySQL
if ($_SSC['conectaServidor'] == true) {
$_SSC['link'] = mysql_connect($_SSC['servidor'], $_SSC['usuario'], $_SSC['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
mysql_select_db($_SSC['nomeBanco'], $_SSC['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['nomeBanco']."].");
}
     
//Função para iniciar a sessão
function abreSessao()
{
    if($_SSC['abreSessao'] == true) 
    {
        session_start();
    }
}

//Função para validar usuário
function validaUsuario($usuario, $senha)
{
    global $_SSC;
    
    //comando addslashes para encarcerar as aspas
    $nusuario = addslashes($usuario);
    $nsenha = addslashes($senha);
    
    $sql = "select * from ".$_SSC['tabelaLogin']." where usuario = ".$nusuario." and senha = ".$nsenha." limit 1";
    $query = mysql_query($sql);
    $resultado = mysql_fetch_assoc($query);
    
    if ($resultado == 1) 
    {
        $_SESSION['usuarioID'] = $resultado['id'];
        $_SESSION['usuarioNome'] = $resultado['nome'];
        $_SESSION['usuarioEmail'] = $resultado['email'];
    }
    else 
    {
        $mensagem = "Usuário ou senha inválidos";
    }
    
    if ($_SSC['validaPagina'] == true)
    {
        $_SESSION['usuario'] = $nusuario;
        $_SESSION['senha'] = $nsenha;
    }
    
    return true;
}

//Valida Páginas
function restrito()
{
    global $_SSC;
    
    if(!isset($_SESSION['usuarioID']) or !isset($_SESSION['usuarioNome']))
    {
        //Não possui usuário logado
        expulsaVisitante();
    }
    else if(!isset($_SESSION['usuarioID']) or !isset($_SESSION['usuarioNome']))
    {
        //Possui um usuário logado
        if($_SSC['validaUsuario'] == true) 
        {
            if(!validaUsuario($_SESSION['usuario'], $_SESSION['senha']))
            {
                expulsaVisitante();
            }
        }
    }
}
//Função para expulsar visitante
function expulsaVisitante()
{
    global $_SSC;
    
    unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioEmail'], $_SESSION['usuario'], $_SESSION['senha']);
    //manda para a tela de login
    header ("Location: ".$_SSC['paginaLogin']);
}
function logout()
{
    global $_SSC;
    if($_SSC['logout'] == true)
    {
        header ("Location: ".$_SSC['paginaLogin']);    
        session_destroy();
    }
}
?>

Peguei parte de desse código de um tutorial que achei na internet e fiz algumas modificações... mas não sei como solucionar o erro que descrevi no comesco do post se alguém puder ajudar.... desde já muito grato a ajuda!

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0
Troque isto:

$query = mysql_query($sql);

Por:

$query = mysql_query($sql)OR DIE(mysql_error());

Isto irá mostrar qual o problema.

eu troquei agora aparece o seguinte erro

Array

Warning: Cannot modify header information - headers already sent by (output started at D:\WEBSERVER\xampp\htdocs\SplitSistemas.com.br\admin\security.php:44) in D:\WEBSERVER\xampp\htdocs\SplitSistemas.com.br\admin\valida.php on line 13

estou fazendo alguns testes meio as cegas também para ver se descubro o que é ... mas até agora nada!

Link para o comentário
Compartilhar em outros sites

  • 0

Existe algum problema nesta consulta:

$sql = "select * from ".$_SSC['tabelaLogin']." where usuario = ".$nusuario." and senha = ".$nsenha." limit 1";
Comece concatenando os valores com ''
$sql = "select * from ".$_SSC['tabelaLogin']." where usuario = '".$nusuario."' and senha = '".$nsenha."' limit 1";

Depois dê um echo nessas variáveis que você está usando na query para ver o que aparece.

Link para o comentário
Compartilhar em outros sites

  • 0

mudei, remudei, remontei a select e continua com o mesmo erro.......

com o echo as duas variáveis aparece o nome de usuario e senha q eu digitei no formulário normal...

e no echo da variavel $sql aparece o select normal

select * from usuario where usuario = 'admin' and senha = 'admin' limit 1

Editado por Rogério Yokoi
Link para o comentário
Compartilhar em outros sites

  • 0

Aparece isso aqui na página!

adminadminselect * from usuario where usuario = 'admin' and senha = 'admin' limit 1Array<br />

<b>Warning</b>: Cannot modify header information - headers already sent by (output started at D:\WEBSERVER\xampp\htdocs\SplitSistemas.com.br\admin\security.php:42) in <b>D:\WEBSERVER\xampp\htdocs\SplitSistemas.com.br\admin\valida.php</b> on line <b>13</b><br />

Separando as coisas,

o primeiro admin que aparece é o Echo da variável $nusuario;

o segundo admin que aparece é o echo da variável $nsenha;

o select * ... é o echo da variável $sql;

logo aparece esse ARRAY que não tenho a minima idéia de onde está vindo;

logo tempos o aviso da header que não pode modificar a página...

to perdidinho sei nem mais pra onde recorrer!

Link para o comentário
Compartilhar em outros sites

  • 0

Arquivo do login.php

<?php 
include 'security.php';
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>..:: Split Sistemas e Soluções LTDA ::.. Uberaba - MG</title>
<link rel="shortcut icon" href="../imagens/icone/favicon.ico" type="image/x-icon" />
<link href="../css/admin.css" rel="stylesheet" type="text/css"/>
</head>
<body>

<div id="bs_login">
    <div id="bs_user">
        <div id="restrito">Area Restrita</div>
        <div id="logon">
        <li><span class="erro"><?php echo $mensagem ?></span></li>
            <form method="post" action="valida.php">
            <li>Usuário:</li>
            <li><input type="text" class="input" name="usuario"/></li>
            <li>Senha:</li>
            <li><input type="password" class="input" name="senha"/></li>
            <li>
                <input type="submit" value="Logar" class="btnlogar" name="botao"/>
            </li>
            </form>
        </div>
    </div>
</div>

</body>
</html>
Aquivo index.php
<?php 
include('security.php');
restrito();
?>

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>
<?php echo "Olá, " . $_SESSION['usuarioNome']; ?>

</body>
</html>
arquivo valida.php
<?php
// Inclui o arquivo com o sistema de segurança
include("security.php");
// Verifica se um formulário foi enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Salva duas variáveis com o que foi digitado no formulário
// Detalhe: faz uma verificação com isset() pra saber se o campo foi preenchido
$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
$senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';
// Utiliza uma função criada no seguranca.php pra validar os dados digitados
if (validaUsuario($usuario, $senha) == true) {
// O usuário e a senha digitados foram validados, manda pra página interna
    header ("Location: index.php");
} else {
// O usuário e/ou a senha são inválidos, manda de volta pro form de login
// Para alterar o endereço da página de login, verifique o arquivo seguranca.php
expulsaVisitante();
}
}
?>
arquivo security.php
<?php
abreSessao();

//Dados e informações de uso global
$_SSC['servidor']        = "localhost";        //Endereço do servidor onde está armazenado o banco de dados
$_SSC['usuario']         = "root";            //Nome de usuário de conexão ao banco de dados
$_SSC['senha']           = "2783yokoi";        //Senha utilizada para conectar ao banco de dados
$_SSC['nomeBanco']       = "splitsistemas"; //Nome do banco de dados
$_SSC['tabelaLogin']     = "usuario";        //Tabela de dados para login
//Outros dados para utilização
$_SSC['paginaLogin']     = "login.php";     //Página onde contém os campos para entrar no sistema
$_SSC['abreSessao']      = true;            //Valida a opção de sempre criar uma seção caso não exista ainda
$_SSC['validaPagina']    = true;            //Valida os dados de login em todas as páginas
$_SSC['conectaServidor'] = true;            //Valida para conectar ao servidor
$_SSC['logout']          = true;           //Faz o logout do sistema

// Verifica se precisa fazer a conexão com o MySQL
if ($_SSC['conectaServidor'] == true) {
$_SSC['link'] = mysql_connect($_SSC['servidor'], $_SSC['usuario'], $_SSC['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
mysql_select_db($_SSC['nomeBanco'], $_SSC['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['nomeBanco']."].");
}
     
//Função para iniciar a sessão
function abreSessao()
{
    if($_SSC['abreSessao'] == true) 
    {
        session_start();
    }
}

//Função para validar usuário
function validaUsuario($usuario, $senha)
{
    global $_SSC;
    
    //comando addslashes para encarcerar as aspas
    $nusuario = addslashes($usuario);
    $nsenha = addslashes($senha);
    
    $sql = "select * from ".$_SSC['tabelaLogin']." where usuario = '".$nusuario."' and senha = '".$nsenha."' limit 1";
    echo $nusuario;
    echo $nsenha;
    echo $sql;
    $query = mysql_query($sql) or die(mysql_error());
    $resultado = mysql_fetch_assoc($query);
    echo $resultado;
    
    if ($resultado == 1) 
    {
        $_SESSION['usuarioID'] = $resultado['id'];
        $_SESSION['usuarioNome'] = $resultado['nome'];
        $_SESSION['usuarioEmail'] = $resultado['email'];
    }
    else 
    {
        $mensagem = "Usuário ou senha inválidos";
    }
    
    if ($_SSC['validaPagina'] == true)
    {
        $_SESSION['usuario'] = $nusuario;
        $_SESSION['senha'] = $nsenha;
    }
    
    return true;
}

//Valida Páginas
function restrito()
{
    global $_SSC;
    
    if(!isset($_SESSION['usuarioID']) or !isset($_SESSION['usuarioNome']))
    {
        //Não possui usuário logado
        expulsaVisitante();
    }
    else if(!isset($_SESSION['usuarioID']) or !isset($_SESSION['usuarioNome']))
    {
        //Possui um usuário logado
        if($_SSC['validaUsuario'] == true) 
        {
            if(!validaUsuario($_SESSION['usuario'], $_SESSION['senha']))
            {
                expulsaVisitante();
            }
        }
    }
}
//Função para expulsar visitante
function expulsaVisitante()
{
    global $_SSC;
    
    unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioEmail'], $_SESSION['usuario'], $_SESSION['senha']);
    //manda para a tela de login
    header ("Location: ".$_SSC['paginaLogin']);
}
function logout()
{
    global $_SSC;
    if($_SSC['logout'] == true)
    {
        header ("Location: ".$_SSC['paginaLogin']);    
        session_destroy();
    }
}
?>

do jeito que criei seria para funcionar da seguinte maneira;

quando entra no admin ele faz a validação se o usuario está logado, se não estiver ele redireciona para o login.php

logo em seguida digita usuario e senha ai então o arquivo valida.php valida o usuário e senha

e o arquivo security valida tudo e contem todas as funções.

Link para o comentário
Compartilhar em outros sites

  • 0

a consulta do select * usuario where usuario = admin and senha = admin limit 1

retorna o seguinte erro

#1054 - Unknown column 'admin' in 'where clause'

SELECT *

FROM `usuario`

WHERE usuario = `admin`

AND senha = `admin`

LIMIT 1

será que o erro pode ser pelo fato de uma tabela ter o mesmo nome de uma coluna ?

Link para o comentário
Compartilhar em outros sites

  • 0

sorry, não deu erro não, foi eu que digitei errado, recoloquei o select no phpmyadmin e agora ele retornou corretamente a consulta

aqui a imagem da tela que apareceu após a consulta

phpmyadmin.png

Uploaded with ImageShack.us

Editado por Rogério Yokoi
Link para o comentário
Compartilhar em outros sites

  • 0

Erro novo.....

ou sei lá se já tava dando isso só não estava vendo ...

$sql = "select * from ".$_SSC['tabelaLogin']." where usuario = '".$nusuario."' and senha = '".$nsenha."' limit 1";
 echo $sql;
 $query = mysql_query($sql) or die(mysql_error());
 echo $query;
 $resultado = mysql_fetch_assoc($query);
 echo $resultado;

Usando o código igual acima obtive a seguinte mensagem

select * from usuario where usuario = 'admin' and senha = 'admin' limit 1adminadminResource id #4Array

separando ....

echo $sql = select * from usuario where usuario = 'admin' and senha = 'admin' limit 1;

echo $nusuario = admin;

echo $nsenha = admin;

echo $query = Resource id #4;

echo $resultado = Array;

outro detalhe é que quando eu mudo a requisição do

$resultado = mysql_fetch_assoc($query) para $resultado = mysql_num_rows($query)

o valor no Echo $resultado é 1

ai agora eu não entendi mais nada!!!!

Editado por Rogério Yokoi
Link para o comentário
Compartilhar em outros sites

  • 0
Link para o comentário
Compartilhar em outros sites

  • 0

sim, to relendo o resto do script acho que é a parte das seções e headers que devem estar com algum erro de lógica por isso não está redirecionando corretamente!!!

porque quando eu digito o usuario e senha no login não está redirecionando para a index ou para o login novamente... só fica parado......

Vlw ESerra....

Link para o comentário
Compartilhar em outros sites

  • 0

function restrito()
{
    global $_SSC;
    
    if(!isset($_SESSION['usuarioID']) or !isset($_SESSION['usuarioNome']))
    {
        //Não possui usuário logado
        expulsaVisitante();
    }
    else if(isset($_SESSION['usuarioID']) or isset($_SESSION['usuarioNome']))
    {
        //Possui um usuário logado
        if($_SSC['validaUsuario'] == true) 
        {
            if(!validaUsuario($_SESSION['usuario'], $_SESSION['senha']))
            {
                expulsaVisitante();
            }
        }
    }
}

será que tem algo errado com essa parte?

porque eu estou indo dando echo e print em todas as variáveis para ver se eles estao recebendo os valores certos... e está indo tudo certinho porém mesmo que eu digite usuario e senha normal no login, não redireciona para o index.php, e sempre q eu tiro o restrito(); o index.php pega o fundo do login.php e nada acontece na tela..... ou seja..... ela só tá mudando na barra de endereço do site......

to intendendo mais nada de verdade....

Link para o comentário
Compartilhar em outros sites

  • 0

Vou entrar na discursão: :D

em relação ao primeiro erro. (headers)

tudo indica que é codificação. Isso mesmo, codificação.

Provavelmente você fez essa pagina em algum editor com uma codificação (Ex: UTF-8).

e no servidor você salvou o arquivo com outro (Ex: iso-8859-1).

Tenta abrir o arquivo valida.php com varios codificações.

( Provavelmente em algum terá alguns caracteres estranhos no inicio do arquivo, dai o erro do header).

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...