Gravar comandos em uma tabela

13/11/2013

0

PHP

Estou com muita dificuldade para resolver essa questão abaixo:

Como gravar os comandos digitados pelo usuário em uma tabela, ou seja, desde a hora que ele digita o login e a senha até a hora que ele sai do sistema.

Pode me ajudar nao sei nem começar rsrs..
Francielle Oliveira

Francielle Oliveira

Responder

Posts

13/11/2013

Claudio Lopes

Franciele, não entendi, tem como explicar na pratica? tipo quem faz o que?
Responder

13/11/2013

Francielle Oliveira

Estou criando um sistema de consulta ao banco de dados,

onde o usuário do sistema deverá logar no sistema(usuário e senha).
*sistema deverá registrar data e hora dos logons.
*sistema deverá registrar todos os comandos efetivados

Com isso estou com dificuldades para gravar os comandos que o usuário for fazendo no sistema numa outra tabela.

Ex: Quando ele logar no sistema, automaticamente já grava numa outra tabela que o usuário Fulano logou as 09:45.
Ai ele entrou para fazer um cadastro, ai automaticamente já grava na tabela que o usuário Fulano cadastrou no sistema e assim por diante.
Responder

13/11/2013

Claudio Lopes

Entendi, o que você quer é gattilho (trigger), assim, quando o cara logar (consutlar a tabela de usuarios) dispara um evento que faz um insert na tabela de log

outra forma de vc fazer isso e que vai demandar mais linhas de códigos é fazer isso no seu sistema, ex:

chamou a função que verifica os dados do usuário e senha -> insere na tabela de log

qualquer dúvida posta ai
Responder

14/11/2013

Francielle Oliveira

Estou tentando fazer assim mais ta dando erro, que não tenho privilégios para fazer. O que pode ser?

CREATE TABLE vigia
(registra VARCHAR2(100));


CREATE OR REPLACE TRIGGER registra_logon
AFTER LOGON ON DATABASE
BEGIN
INSERT INTO sys.vigia VALUES (USER || " entrou no sistema em " || TO_CHAR(sysdate, "DD-MM-YYYY HH24:MI:SS"));
COMMIT;
END; /
Responder

14/11/2013

Claudio Lopes

seu usuario é admin?
Responder

15/11/2013

Francielle Oliveira

Sim, fiz abaixo e nao ta dando certo.


CREATE TABLE registro(
Nome VARCHAR2(30),
dat date
);


CREATE TABLE client(
Nome VARCHAR2(30)
);

CREATE OR REPLACE TRIGGER marca_logonn
BEFORE INSERT OR DELETE OR UPDATE
ON registro
REFERENCING NEW AS NEW OLD AS OLD
BEGIN
INSERT INTO client VALUES (USER || 'entrou no sistema em' || TO_CHAR(sysdate, 'DD-MM-YYYY, HH24:MI:SS'));
END;
/
Responder

15/11/2013

Claudio Lopes

bom poe a mensagem de erro ai, outra coisa, sei pouco sobre o assunto porem o que sei é os insert estarão na tabela inserted e os replace ou delete na tabela deleted...
Responder

25/11/2013

Adilson Rumao

Estou fazendo algo parecido assim:
Veja se lhe ajuda de alguma forma ou lhe dá uma ideia para onde seguir.

<?php

function gravarLogin($admin) {
    /* Altera a data e hora do Localhost */
    date_default_timezone_set('America/Sao_Paulo');
    $pdo = conectar();
    try {
        $gravarLogin = $pdo->prepare("INSERT INTO dados_login_admin (dados_login_admin, dados_login_data) VALUES (:admin, :data)");
        $gravarLogin->bindValue(":admin", $admin);
        $gravarLogin->bindValue(":data", date("Y/m/d h:i:s"));
        $gravarLogin->execute();
        //Se cadastrou no banco o login do Administrador
        if ($gravarLogin->rowCount() == 1):
            return true;
        else:
            return false;
        endif;
    } catch (PDOException $e) {
        echo '<div class="msg_erro">Erro ao gravar dados de Login. </div>'.$e->getMessage();
    }
}

function gravarDados($arquivo) {
    /* Altera a data e hora do Localhost */
    date_default_timezone_set('America/Sao_Paulo');
    /* Verifica o tipo de arquivo para gravar as mensagens */
    if ($arquivo == "functions/login/sucesso_login.txt"):
        $str = "O Administrador " . $_SESSION['cliente'] . " logou com sucesso. IP: " . $_SERVER['REMOTE_ADDR'] . " na Data: " . date("Y/m/d 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;
    /* Grava os dados em arquivo .txt */
    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 admin WHERE admin_login = :login AND admin_senha = :senha LIMIT 1");
        $logar->bindValue(":login", $login);
        $logar->bindValue(":senha", $senha);
        $logar->execute();
        $dadosLogin = $logar->fetch(PDO::FETCH_ASSOC);

        if ($logar->rowCount() == 1):
            //Se logou cria a Sessão
            $_SESSION['admin'] = $dadosLogin['admin_nome'];
            $_SESSION['responsavel'] = $dadosLogin['admin_login'];
            $_SESSION['logado_admin'] = true;

            //Grava no banco de dados
            if (gravarLogin($dadosLogin['admin_id'])):
                //Grava em arquivo .txt                
                gravarDados("functions/login/sucesso_login.txt");
                return true;
            endif;
        else:
            //Se não logou grava em arquivo .txt
            gravarDados("functions/login/erro_login.txt");
            return false;
        endif;
    } catch (PDOException $e) {
        echo '<div class="msg_erro">Erro ao tentar logar no Sistema. </div>'.$e->getMessage();
    }
}

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

function pegaIdAdmin($nome = null){
    $pdo = conectar();
    try{
    $pegaId = $pdo->prepare("SELECT * FROM admin WHERE admin_nome = :admin");
    $pegaId->bindValue(":admin", $nome);
    $pegaId->execute();
    $dados = $pegaId->fetch(PDO::FETCH_ASSOC);
    return $dados['admin_id'];
    }catch(PDOException $e){
        echo "Erro ao pegar ID do admin. ".$e->getMessage();
    }
}

function ultimoLogin($id){
    $pdo = conectar();
    try{
    $ultimaVisita = $pdo->prepare("SELECT * FROM dados_login_admin WHERE dados_login_admin = :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 último login do admin. ".$e->getMessage();
    }
}
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar