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

Sistema administrativo com log + erro


DunkMask

Pergunta

Ola galera,

em uma versão do sistema administrativo do meu site tive problemas com dados sumindo e não tinha como saber que estava acontecendo.

Então resolvi limitar o acesso a certas areas atraves de niveis, ate então a coisa deu certo. Mas andei lendo alguns artigos na net e tive a curiosidade e o interesse de criar logs, saber o que cada usuario anda fazendo.

Como sou novato não intendo muito da coisa, mas de inicio criei a seguinte tabela no banco de dados.

CREATE TABLE `logs` (
  `id_log` int(11) NOT NULL auto_increment,
  `usuario` varchar(50) NOT NULL,
  `hora` datetime NOT NULL,
  `ip` varchar(15) NOT NULL,
  `mensagem` text NOT NULL,
  PRIMARY KEY  (`id_log`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Este é o código que eu pensei que colocaria o log na tabela.
<?php
        $ip = $_SERVER['REMOTE_ADDR']; // Registra o ip do usuario
        $hora = date('Y/m/d H:i:s'); // Salva a data e hora 
        $usuario = $_SESSION['UsuarioNome']; // Salva o nome do usuario
        $mensagem = "Capitulo adicionado com sucesso"; // Mensagem

$sqlog = "INSERT INTO 'logs' (hora, ip, mensagem, usuario) VALUES ('$hora', '$ip', '$mensagem', '$usuario')";
?>
so que ate aqui tudo bem, mas agora não sei onde colocar isso mais., já tentei colocar junto do arquivo que insere o conteudo no db e na pagina do formulario., se precisar posto o restante do codigo aqui. Agora a minha segunda dúvida, que esta mais para um problema XD No mesmo sistema criei a área de noticias cujo o código é este.
<?php
$login = $_SESSION['UsuarioNome'];
if ($_GET['post'])
{
    $x = mysql_fetch_object(mysql_query("SELECT * FROM usuarios WHERE nome='$login'"));
    $nome = $x->login;
    mysql_close($conexao);
    $assunto = $_POST['assunto'];
    $noticia = $_POST['noticia'];
    $data = "<b>" . date("d/m/y") . " &agrave;s " . date("H:i");
    require('./config.php');
    $sql = mysql_query("INSERT INTO news (id_news, nome, assunto, data, news) values ('','$nome', '$assunto', '$data', '$noticia')") or
        die(mysql_error());
    if (!$sql)
        echo "Erro!";
    else
        echo "News Postada com sucesso!";
}
?>
<form action="?page=principal/new&post=ok" method="post" name="postar" >
<input type="text" name="assunto" size="40" value="Titulo"/>
<textarea  type="text" name="noticia" ></textarea>
<br /><br />
<input id="tiny" name="postar" type="submit" value="postar" />
</form>
mas quando eu insiro este codigo que seria dos lançamentos do meu site
<div id="cxlancamento">
  <div id="cxmenu">
        <ul>
        <li><img height="17" width="61" onclick="document.getElementById('hd172').style.display='block';  document.getElementById('sd172').style.display='none'; document.getElementById('rmvb172').style.display='none'" onmouseout="this.src='images/lancamento/fundoselect.png'" onmouseover="this.src='images/lancamento/hover.png" class="quali"  alt="" src="images/lancamento/select.png" /></li>
        <li><img height="17" width="61" onclick="document.getElementById('hd172').style.display='none';  document.getElementById('sd172').style.display='block'; document.getElementById('rmvb172').style.display='none'" onmouseout="this.src='images/lancamento/fundoselect.png'" onmouseover="this.src='images/lancamento/hover.png" class="quali"  alt="" src="images/lancamento/fundoselect.png" /></li>
                <li><img height="17" width="61" onclick="document.getElementById('hd172').style.display='none';  document.getElementById('sd172').style.display='none'; document.getElementById('rmvb172').style.display='block'" onmouseout="this.src='images/lancamento/fundoselect.png'" onmouseover="this.src='images/lancamento/hover.png" class="quali"  alt="" src="images/lancamento/fundoselect.png" /></li>
    </ul>
  </div><!--FIM DA DIV CXMENU-->
        <div id="lancamentos">
        <span class="cximg"></span>
        <span class="cxtitulo">
                        <span class="cx01">EPIS&Oacute;DIO 173</span>
            <span class="cx02">Meu nome &eacute; Uzumaki Naruto</span>
        </span><!--FIM DA SPAN CXTITULO-->
        
        <div class="csrodape" id="hd172" style="display:block;">
                        <div id="cxmirrors">
                        Megaupload<br />
                    Mediafire<br />
                    Badongo<br />
                    Sharex<br />
                </div>
                        <div id="cxfnasub">
                                <span class="cx03"><span class="cx03a"><a href="HD">Download</a></span>Link direto</span>
                        <span class="cx04"><span class="cx04a">PUNCH-FANSUB</span>Clique para visitar</span>
                        </div>
       </div><!--FIM DA DIV HD172-->
       
       <div class="csrodape" id="sd172" style="display:none;">
                        <div id="cxmirrors">
                        4Share<br />
                    Mediafire<br />
                    Badongo<br />
                    Sharex<br />
                </div>
                        <div id="cxfnasub">
                                <span class="cx03"><span class="cx03a"><a href="SD">Download</a></span>Link direto</span>
                        <span class="cx04"><span class="cx04a">PUNCH-FANSUB</span>Clique para visitar</span>
                        </div>
       </div><!--FIM DA DIV SD172-->
       
       <div class="csrodape" id="rmvb172" style="display:none;">
                        <div id="cxmirrors">
                        RapidShare<br />
                    Mediafire<br />
                    Badongo<br />
                    Sharex<br />
                </div>
                        <div id="cxfnasub">
                                <span class="cx03"><span class="cx03a"><a href="RMVB">Download</a></span>Link direto</span>
                        <span class="cx04"><span class="cx04a">PUNCH-FANSUB</span>Clique para visitar</span>
                        </div>
       </div><!--FIM DA DIV rmvb172-->
    </div><!--FIM DA DIV LANÇAMENTO-->
    
    
</div><!--FIM DA DIV CXLANÇAMENTO-->

ele me exibe o seguinte erro:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'hd172').style.display='block'; document.getElementById('sd172').style.display='' at line 1

Bom, se alguém puder me ajudar com estes dois casos eu agradeceria, sou novato na area e não entendo muito coisa ainda.

Agradeço a todos que se interessarem pelo caso.

Editado por *FIT*
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Bom, acho que fazer isso salvando em um banco de dados, pode sobrecarregar o banco, é claro que isso vai depender de quantas pessoas acessam o sistema e a frequencia.

Na verdade aconselho esses logs em um arquivo TXT, o que acha? Porém, se mesmo assim preferir salvar em uma base, posso dar uma olhada e ver aonde está errando.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha, a ideia é boa, mas eu não sei fazer em txt, estou apenas a 4 meses estudando php e ainda não encontrei material falando sobre isso.

Se vocês tiverem algo relacionado a isso eu aceito sim.

ps: já resolvi o problema do erro. o Meu wamp que não suporta isso, mas minha conta na web funcionou perfeitamente.

Editado por DunkMask
Link para o comentário
Compartilhar em outros sites

  • 0

o do log em txt eu vou querer sim, desculpe a demora porque estava no escritorio da loja aqui.

eu resolvi somente a parte de postar noticia no site que tava dando erro, mas a parte do log eu ainda não resolvi, então se puderem me ajudar com esse log em txt eu agradeceria

Editado por DunkMask
Link para o comentário
Compartilhar em outros sites

  • 0

Legal, então, ontem mesmo precisei montar um log para um cliente, e montei uma pequena função:

function log_txt($texto,$usuario) // recebendo os parametros
{
$abre = fopen("log.txt", "a+"); // abre o arquivo para leitura e escrita
$quebra = chr(13).chr(10); // variavel responsavel pela quebra de linha
$escreve = fwrite($abre, date("H:m:s d/m/Y")." - $usuario - $texto".$quebra); //escreve a data e hora, nome do usuario, o texto e adiciona a quebra de linha
fclose($abre); fecha o arquivo
}
E aqui o código para chamar a função
log_txt("Cadastro do conteudo blablabla", "Fulano"); // aonde monta o texto que irá pro log, e o nome do usuario, que pode ser resgatado por sessão por exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0

Hum, ok.

menu.php, (aqui no caso quero saber se o usuario adicionou, editou ou excluiu algo.)

<div id="pagcorpo">
<?php
    if($_GET['action'] != "editar"){
?>
    <div id="pagtitulo">Cadastrar menu</div>
    <div id="pagconteudo">
        <form action="?page=include/add.menu&action=salvar" method="post">
        <span class="caixapost1">Nome:</span>
        <span class="caixapost2"><input name="nome" type="text" size="30" /></span>
        <span class="caixapostboth"></span>
        
        <span class="caixapost1">Link:</span>
        <span class="caixapost2"><input name="endereco" type="text" size="30" /></span>
        <span class="caixapostboth"></span>
        
        <span class="caixapost1">Sessão:</span>
        <span class="caixapost2">
            <select name="tipo">
              <option value="principal">Principal</option>
              <option value="multimidia">Multimídia</option>
            </select>
        </span>
        <span class="caixapostboth"></span>
        
        <span class="caixapost1">Target:</span>
        <span class="caixapost2">
            <select name="target">
              <option value="_parent">_parent</option>
              <option value="_blank">_blank</option>
            </select>
        </span>
        <span class="caixapostboth"></span>
      <span class="caixapost3"><input name="cadastrar" type="submit" value="Cadastrar" /></span>
        </form>
    </div><!--FIM DA DIV PAGCONTEÚDO-->
e tem o arquivo add.menu.php que é encarregado de enviar os dados para o banco de dados. Este codigo passado por você deveria ficar o add.menu.php ou juntamente com o formulario?
<?php
$nome = $_POST['nome'];
$endereco = $_POST['endereco'];
$target = $_POST['target'];
$tipo = $_POST['tipo'];

$texto = "Usuário criou um menu";
$usuario = $_SESSION['UsuarioNome'];
$hora = date('Y/m/d H:i:s');

if($_GET['action'] == "salvar"){
    $inserir = mysql_query("INSERT INTO menu (nome, endereco, target, tipo) VALUE ('$nome', '$endereco', '$target', '$tipo')");
    
    echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=?page=principal/menu'>
    <script>window.alert('Menu adicionado com sucesso.');</script>
    ";
} function log_txt($texto,$usuario) // recebendo os parametros
{
$abre = fopen("log.txt", "a+"); // abre o arquivo para leitura e escrita
$quebra = chr(13).chr(10); // variavel responsavel pela quebra de linha
$escreve = fwrite($abre, date("H:m:s d/m/Y")." - $usuario - $texto".$quebra); //escreve a data e hora, nome do usuario, o texto e adiciona a quebra de linha
fclose($abre); fecha o arquivo
}
?>

bom, seria isso?

Editado por DunkMask
Link para o comentário
Compartilhar em outros sites

  • 0

Eu aconselharia chamar a função após salvar, editar ou excluir.

Mas não do jeito que você usou, aconselho deixar só a função em uma página separada.

Nas páginas que for usar, utilize include para adicionar esse arquivo.

E aonde for querer registrar o log, apenas chame a função passando os parametros conforme expliquei no post anterior.

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...