Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior Gabolli

Erro com Bibliotecas...!

Recommended Posts

Confira se o noma da pasta também está em minúsculo.

Seu problema é simples. É apenas um erro de path. É alguma simples falta de atenção

Confira se o noma da pasta também está em minúsculo.

Seu problema é simples. É apenas um erro de path. É alguma simples falta de atenção

 

Sim esta tudo em minúsculo, já conferi....estou procurando aparenta esta tudo ok....

 

 

Sim esta tudo em minúsculo, já conferi....estou procurando aparenta esta tudo ok....

Localmente o erro e diferente:

Strict Standards: Non-static method pager::factory() should not be called statically inC:\xampp\htdocs\galeria\includes\catalogo.php on line 40

Peguei esse erro direto no servidor onde hospedo:

PHP Fatal error:  Class 'pager' not found in /home/storage/4/d6/78/docesgabolli/public_html/includes/catalogo.php on line 40, referer: http://www.docesgabolli.com.br/index.php?p=catalogo&pageID=3

Achei estanho pois ele esta "tenta abrir" a pagina 3 do catalogo não consigo intender isso !!!!

 

 

Peguei esse erro direto no servidor onde hospedo:

PHP Fatal error:  Class 'pager' not found in /home/storage/4/d6/78/docesgabolli/public_html/includes/catalogo.php on line 40, referer: http://www.docesgabolli.com.br/index.php?p=catalogo&pageID=3

Achei estanho pois ele esta "tenta abrir" a pagina 3 do catalogo não consigo intender isso !!!!

2dq2it.jpg

 

como pode ver todos os arquivos estão em letras minúsculas :(

 

 

Não sei onde posso mais procurar esse bendito erro !!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Localmente o erro e diferente:


Strict Standards: Non-static method pager::factory() should not be called statically inC:\xampp\htdocs\galeria\includes\catalogo.php on line 40

Isso ocorre quando você chama um método não estático de forma estática. Ou seja, "factory" não foi declarado com "static", mas você usou o operador de método estático "::"

Defina o método como static e isso será resolvido

 

 

Peguei esse erro direto no servidor onde hospedo:

PHP Fatal error:  Class 'pager' not found in /home/storage/4/d6/78/docesgabolli/public_html/includes/catalogo.php on line 40, referer: http://www.docesgabolli.com.br/index.php?p=catalogo&pageID=3

Claramente, são dois códigos diferentes nos servidores local e remoto.

Apague TUDO do seu servidor remoto e envie os arquivos de novo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso ocorre quando você chama um método não estático de forma estática. Ou seja, "factory" não foi declarado com "static", mas você usou o operador de método estático "::"

Defina o método como static e isso será resolvido

 

 

Claramente, são dois códigos diferentes nos servidores local e remoto.

Apague TUDO do seu servidor remoto e envie os arquivos de novo.

Apaguei, e retornei os arquivos, e enviei novamente, sem sucesso !!!!

 

 

Apenas para passar e deixar meus agradecimento pela "paciência e compreensão". O problemas estava mais fácil de ser resolvido que estava imaginando, a versão do pager esta incompatível com a versão do php utilizado no momento, assim baixando uma versão mais antiga do pager a pagina esta funcionando perfeitamente. Muito obrigado a você quem dedicou seu tempo para sanar minhas dúvidas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isso é sempre recomendável usar versões recentes de todas as bibliotecas e, claro, do PHP também

 

E sempre preste atenção aos requisitos de cada biblioteca. Lá diz quais versões são compatíveis

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, mas só uma coisa a versão do php não o servidor onde hospedamos quem fornece isto ? Ou precisamos fazer alguma alteração no código pra isso também ?

Diversos servidores oferecem diferentes versões do PHP instaladas. Geralmente, basta uma linha no .htaccess para alterá-la

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde,

 

Nova parte do site, novos erros.....

 

Apenas me tirem uma dúvida fiz a parte do adm porém esta dando o seguinte erro:

Fatal error: Call to undefined function logar() in /home/storage/4/d6/78/docesgabolli/public_html/admin/index.php on line 21

Sim eu sei que ele não esta conseguindo encontrar a função de logar no arquivo.

O código se encontra assim :

 

Index.php

<?php
session_start();


ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);


include_once 'functions/config/config.php';


try {
    carregaIncludes(array("conexao", "login"), ("login"));
} catch (Exception $e) {
    echo $e->getMessage();
}


if ($_SERVER['REQUEST_METHOD'] == 'POST'):
    if (isset($_POST['logar'])):
        $login = addslashes($_POST['login']);
        $senha = addslashes($_POST['senha']);


        if (logar($login, $senha)):
            header(("Location: inc/painel.php"));
        else:
            $erro = "Usuário ou senha inválidos";
        endif;
    endif;
endif;
?>


<html>
    <head>
        <meta http-equiv="Content_Type" content="text/html; charset=utf-8"/>
        <title>Administrador  - Doces Gabolli</title>
        <link href="css/style_login.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <div id="container">
            <div id="login">
                <div id="titulo">
                    Administrador - Doces Gabolli
                    <br />
                    <hr>
                </div>
                <div id="cadeado">
                    <img src="imagens/cadeado.png" title="login" alt="login administrador"/>
                </div>
                <div id="form_login">
                    <form action="" method="POST">
                        <label for="login_nome">LOGIN</label>
                        <input type="text" name="login" class="input_text_login"/>


                        <label for="senha">SENHA</label>
                        <input type="password" name="senha" class="input_text_login"/>
                        <br/>
                        <input type="submit" name="logar" value="OK" id="botao_logar"/>
                    </form>
                </div>
            </div>


            <?php
            if (isset($erro)):
                if (!empty($erro)):
                    ?>
                    <div class="erro">
                        <?php
                        echo $erro;
                        ?>
                    </div>
                    <?php
                endif;
            endif;
            ?>
        </div>
    </body>
</html>

config.php

<?php

function carregaIncludes($includes = null, $modo = null) {

    if ($modo != null):
        if ($modo == "login"):
            define("PATH_INCLUDE", "functions/");
        elseif ($modo == "admin"):
            define("PATH_INCLUDE", "../functions/");
        endif;
    else:
        throw new Exception("O PARAMENTRO MODO NÃO PODE SER NULO");
    endif;
    
    set_include_path(PATH_INCLUDE . "../conexao/" . PATH_SEPARATOR . PATH_INCLUDE . "../login/" . PATH_SEPARATOR . PATH_INCLUDE . "../url/" . PATH_SEPARATOR . PATH_INCLUDE . "../cadastrar/" . PATH_SEPARATOR . PATH_INCLUDE . "../helpers/" . PATH_SEPARATOR . PATH_INCLUDE . "../alterar/" . PATH_SEPARATOR . "../Bibliotecas/Pager/" . PATH_SEPARATOR . "Bibliotecas/Pager/");

    $pastas = explode(PATH_SEPARATOR, get_include_path());
    $caminhos = count($pastas);


    if (!is_null($includes)):
        if (is_array($includes)):
            foreach ($includes as $inc):
                for ($i = 0; $i < $caminhos; $i++):
                    if (file_exists($pastas[$i] . $inc . ".php")):
                        include_once $pastas[$i] . $inc . ".php";
                    endif;
                endfor;

            endforeach;
        else:
            throw new Exception("O PARAMENTRO PASSADO NÃO É UMA ARRAY");
        endif;
    else:
        throw new Exception("Nenhum paramentro foi passado para função");
    endif;
}


E minha arvore de arquivos esta assim

 

2ce6frl.jpg

 

Alguém poderia só me orientar onde posso estar errando ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, a função logar esta no arquivo:

 

logar.php

<?php

function gravarLogin($adm) {

    date_default_timezone_set("BRAZIL/EAST");

    $pdo = conectar();
    try {
        $gravarLogin = $pdo->prepare("INSERT INTO dados_login(dados_login_nome, dados_login_data) VALUES(:adm, :data)");
        $gravarLogin->bindValue(":adm", $adm);
        $gravarLogin->bindValue(":data", date("Y-m-d h:i:s"));
        $gravarLogin->execute();

        if ($gravarLogin->rowCount() == 1):
            return TRUE;
        else:
            return FALSE;
        endif;
    } catch (PDOException $e) {
        echo "Erro ao gravar dados de login";
    }
}

function gravarDados($arquivo) {

    date_default_timezone_set("BRAZIL/EAST");

    if ($arquivo == "functions/login/sucesso_login.txt"):
        $str = "O administrador " . $_SESSION['administrador'] . " logou com sucesso com o IP " . $_SERVER['REMOTE_ADDR'] . " na data " . date("d/m/y h:i:s") . "\n";
    else:
        $str = "Erro ao logar com o IP " . $_SERVER['REMOTE_ADDR'] . " na data " . date("d/m/y h:i:s") . "\n";
    endif;

    if (file_exists($arquivo)):
        $file = fopen($arquivo, "a");
        if ($file):
            fputs($file, $str);

        endif;
    endif;
}

function logar($login, $senha) {

    $pdo = conectar();

    try {

        $logar = $pdo->prepare("SELECT * FROM administrador WHERE administrador_login = :login AND administrador_senha = :senha");
        $logar->bindValue(":login", $login);
        $logar->bindValue(":senha", md5($senha));
        $logar->execute();
        $dadosLogin = $logar->fetch(PDO::FETCH_ASSOC);

        if ($logar->rowCount() == 1):
            $_SESSION['administrador'] = $dadosLogin['administrador_nome'];
            $_SESSION['logado_admin'] = TRUE;

            if (gravarLogin($dadosLogin['administrador_id'])):
                gravarDados("functions/login/sucesso_login.txt");
                return TRUE;
            endif;

        else:
            gravarDados("functions/login/erro_login.txt");
            return FALSE;
        endif;
    } catch (PDOException $e) {
        echo "ERRO AO TENTAR LOGAR NO SISTEMA " . $e->getMessage();
    }
}

function verificadoLogado($sessao) {
    if (!isset($_SESSION[$sessao])):
        header("Location: ../index.php");
    endif;
}

function logOut() {
    
}

function pegaIdCliente($nome = NULL) {

    $pdo = conectar();
    try {
        $pegaId = $pdo->prepare("SELECT * FROM administrador WHERE administrador_nome = :cliente");
        $pegaId->bindValue(":cliente", $nome);
        $pegaId->execute();
        $dados = $pegaId->fetch(PDO::FETCH_ASSOC);
        return $dados['administrador_id'];
    } catch (PDOException $e) {
        echo "ERRO AO PEGAR ID DO CLIENTE" . $e->getMessage();
    }
}

function ultimoLogin($id) {
    $pdo = conectar();
    try {
        $ultimaVisita = $pdo->prepare("SELECT * FROM dados_login WHERE dados_login_nome = :dados_login ORDER BY dados_login_data DESC Limit 1,1");
        $ultimaVisita->bindValue(":dados_login", $id);
        $ultimaVisita->execute();
        $dados = $ultimaVisita->fetch(PDO::FETCH_ASSOC);
        return $dados['dados_login_data'];
    } catch (PDOException $e) {
        echo "ERRO AO PEGAR ID DO CLIENTE" . $e->getMessage();
    }
}

Pois como esta no arquivo config estou fazendo um set_include_path que no caso era para localizar este arquivo. E isso não esta acontecendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não quero questionar isso, apenas conhecimento.....

 

No caso então, o q eu entendi, ele apenas aponta onde pode encontrar os arquivos tipo o logar, conexão certo ?

 

Porém porque ele consegue localizar o conexao.php que esta na pasta ../conexão e não conhece encontrar o logar que esta na pasta ../login/logar.php, e isso que não estou entendendo pois ambos estão sendo apontados para pastas corretas.....

 

EDIT

 

Achei um post seu falando sobre o assunto, porém não consegui entender muito sobre isso, teria como me ajudar mais sobre esse assunto ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde, só para deixar dizer que não achei uma solução melhor a não ser colocar os includes em cada página, ficou mais feio e completo de se fazer porém foi a unica solução a qual achei para resolver temporariamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você possui um sistema espalhado em diversas pastas e subpastas, tem que tomar MUITO cuidado com caminhos relativos. É muito importante usar caminhos absolutos e ter um arquivo central, que é sempre carregado.

 

Foi por isso que sugeri usar um Arquivo de Inicialização.

 

Sugiro implementar um Sistema de rotas. Nesse caso, haverá sempre esse arquivo central.

 

Dê uma estudada sobre estruturas de projetos. Um pouco sobre MVC também ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.