Erp100论坛's Archiver

wjfonhand 发表于 2007-8-13 09:17

生产版本的weberp中的SQL记录

查看数据库发现每个条目的添加更改并没有记录用户和时间。昨天偶然看weberp的生产版(有人为某公司定制的,改了很多地方,建议研究),看到他们这样实现的。

在 ConnectDB_mysql.inc里的DB_query函数加上了

//CMM - added audit trail               
        $action = strtoupper(substr($SQL, 0, 6));
        
        if($_SESSION['AuditTrail']==_('All Access')  
             || ($_SESSION['AuditTrail']==_('Changes Only')
                              && ($action=='INSERT'
                                                                 || $action=='UPDATE'
                                                                 || $action=='DELETE') ) ) {
                                                                                 
                AuditTrail(addslashes($SQL) , $_SESSION['UserID'], $_SERVER['PHP_SELF']);                                                                        
        
        }

那么看看这个AuditTrail函数的代码呢:

function AuditTrail($sql, $user, $page){
/*
* Tracks a sql action by logging the sql code to the sqlaudit table
*/
        
        global $AuditTrail_dbuser;
        global $AuditTrail_dbpw;
        global $host;
        
  //this user has rights only to the sqlaudit table               
  $auditConn = mysql_connect($host, $AuditTrail_dbuser, $AuditTrail_dbpw);
  
  if(!$auditConn || !mysql_select_db($_SESSION['DatabaseName'],$auditConn)){
          echo '<BR>' . _('Could not open audit trail connection!');
  }else{
               
                $AuditSql = "INSERT INTO sqlaudit
                                                      (sqlaction,
                                                       user,
                                                       date_time,
                                                       page)
                                              VALUES('"
                                              . addslashes($sql)
                                              . "','"
                                              . $user
                                              . "','"
                                              . date("m/d/Y H:i:s")
                                              . "','"
                                              . $page
                                              . "')";

                mysql_query($AuditSql,$auditConn);
                mysql_close($auditConn);
        }

}

很显然,要在数据库里加一个表sqlaudit。

不过这个表增长应该够快的,还要定期归档为好

tanhua1900 发表于 2007-10-12 15:45

ding......................

gangdan1982 发表于 2007-11-9 10:52

那个版本哪里下载?

wjfonhand 发表于 2007-11-9 12:29

只有程序没有数据库,不能运行的。
在webERP的wiki上有链接,在3.04基础上改了太多地方了。有一部分修改已经合并到了新版weberp中。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2007 Comsenz Inc.