Jump to content
Fórum Script Brasil
  • 0

Problema com mysql_fetch_assoc


Rogério Yokoi

Question

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 to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Rogério Yokoi
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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!!!!

Edited by Rogério Yokoi
Link to comment
Share on other sites

  • 0
  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...