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

Campos de auditoria em PHP


viper33

Pergunta

Tenho em minhas tabelas campos de auditoria onde eu quero gravar o usuário que incluiu ou alterou um registro e as respectivas datas. O campo `Dtincreg` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, fará com que a data seja inserida no banco automaticamente? Se sim, como fazer para a data de alteração do registro também ser capturada, já que o PHP permite apenas um campo current_timestamp em uma tabela?

Segue exemplo de tabela abaixo:

CREATE TABLE `SIA`. `TbCidade`  (
        `CdCidade` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        `NmCidade` Varchar(30) NOT NULL,
        `SgEstado` char(2) NOT NULL,
        `CdUsuinc` CHAR( 20 ) NOT NULL,
        `Dtincreg` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        `Cdusualt` CHAR( 20 ) NOT NULL,
        `Dtaltreg` TIMESTAMP NOT NULL,
UNIQUE (
`NmCidade` 
)
) ENGINE = MyISAM;

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
Bom, uma saida simples é pegar essa data no próprio PHP através da função Date, no momento que a alteração for feita, ai é só salvar na base. ;)

RESOLVIDO

Fiz assim:

<?PHP
  $operacao = $_POST["operacao"];
  include "conecta_mysql.inc";
  $incluir = 0;
  $hora = date('H:i:s');
   if ($operacao=="incluir")
  {
      $ramo = $_POST["ramo"];
      $incluir = 1;
      $sql = "INSERT INTO tbrm_ativ values ('  ','$ramo',now(),now())";
      mysql_query ($sql) or die("Não foi possível inserir.");
      echo "Ramo de atividade incluído com sucesso.";
  }
  mysql_close($con);
?>

Agora preciso resolver a última questão: a tabela tem os campos código do usuário que incluiu e o código do usuário que alterou. Preciso saber como capturar esses campos.

Editado por *FIT*
Adicionar a tag [code]! *FIT*
Link para o comentário
Compartilhar em outros sites

  • 0

O usuario provavelmente faz login para chegar até ai pois me parece ser uma area restrita, logo você deve salvar informações desse usuario em um cookie ou sessão, correto?

Se sim, apenas salve o código dele também.

Link para o comentário
Compartilhar em outros sites

  • 0
O usuario provavelmente faz login para chegar até ai pois me parece ser uma area restrita, logo você deve salvar informações desse usuario em um cookie ou sessão, correto?

Se sim, apenas salve o código dele também.

Como é um programa para uso em "desktop" o mais indicado seria criar uma sessão, correto?

Link para o comentário
Compartilhar em outros sites

  • 0
Bom, na verdade independente do tipo de aplicação, eu sempre prefiro usar sessão, acho mais seguro.

*FIT* preciso do seu auxílio novamente pois os campos cdusuinc e cdusualt não estou conseguindo capturar. Já tentei diversas vezes mas não funcionou.

Após o usuário fazer o login, abre-se a tela principal do programa. E tenho links para diversos formulários. Estou testando primeiro o cadastro do ramo de atividade. Insere todos os dados, menos os dois citados acima. O formulário que recebe o cadastro está dessa forma:

<?PHP
  session_start();
  include "conecta_mysql.inc";  
?>

<?PHP
  $operacao = $_POST["operacao"];// é um hidden
  $ramo = $_POST["ramo"];
  $cdusuinc = $_POST["cdusuinc"];
  $cdusualt = $_POST["cdusualt"];
  $incluir = 0;
  $erro = 0;
  
   if (empty($ramo))
  {
      echo "Digite o ramo de atividade.<br>"; 
      $erro = 1;
      echo "<p align=\"center\"><a href = \"frmcadrmativ.html\">Voltar</a></p>";
  }
  else
  if ($operacao=="incluir")
  {
      
      
      $incluir = 1;
      $sql = "INSERT INTO tbrm_ativ values ('','$ramo', '$cdusuinc', now(), '$cdusualt', now())";
      mysql_query ($sql) or die("Não foi possível inserir.");
      echo "Ramo de atividade incluído com sucesso.";      
  }
  mysql_close($con);
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz uma pequena alteração: o formulário de login passou a ser o index e a página principal do sistema chamei de principal. Tentei colocar o código de sessão e de conexão no index(form de login) mas o código fica todo azul.

<!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>Controle de Acesso</title>
<link rel="stylesheet" href="estilo.css" type="text/css"  media="screen" >
</head>
<body>
<form method="post"  id="frmlogin" name="login" action="rec_login.php" >
  <table width="400" border="0" align="center" class="tblogin">
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2" class="Titulo">SCCAC - CONTROLE DE ACESSO!</td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td width="13%" rowspan="2"><img src="Cadeado" width="120" height="100" alt="Cadeado" /></td>
      <td width="80%" height="46"><label for="login">Login:</label>
        
        <input name="login" class = "input" type="text" id="login" size="20" maxlength="20" /></td>
    </tr>
    <tr>
      <td><label for="senha">Senha:</label>
      <input name="senha"  class = "input" type="password" id="senha" size="20" maxlength="20" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" name="enviar" id="enviar" value="Enviar" /></td>
    </tr>
  </table>
</form>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0
Você abriu as tags php para colocar os códigos do mesmo?

Com certeza. Coloquei como abaixo.

<?PHP

session_start();

include "conecta_mysql.inc";

?>

Agora vi que o salvei como .html. Mudei a extensão para PHP e estou testando.

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

  • 0
Você abriu as tags php para colocar os códigos do mesmo?

Com certeza. Coloquei como abaixo.

<?PHP

session_start();

include "conecta_mysql.inc";

?>

Agora vi que o salvei como .html. Mudei a extensão para PHP e estou testando.

Meu formulário de login que é o index não vai precisar do código PHP acima, pois no meu entender, a sessão só deverá se abrir no formulário seguinte caso o usuário tenha logado. Estou correto?

Por via das dúvidas coloquei a conexão no meu index mas da mesma forma não inseriu o cdusuinc e o cdusualt.

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,7k
×
×
  • Criar Novo...