后台操作日志(sql日志)

最近的一个项目 客户那边老是无缘无故的丢失文档 , 所以这边对后台的一些操作进行日志记录 代码如下

/**
 * 删除文档AJAX
 * @function ajaxDelete
 * @author YuMijo
 */
function ajaxDelete()
{   
    // var_dump($_POST['id']);die();
    

    $id = $_POST['id'];
    $sql = "SELECT docKey From `e_qcloud_document` WHERE id IN {$id}";
    echo json_encode($this->_sql($sql));
    $sql = "DELETE FROM `e_qcloud_document` WHERE  id IN {$id}";

    $this->_sql($sql);
    if($_POST['id'])
        {//管理员日志
            if(!is_dir($dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'error'.DIRECTORY_SEPARATOR.'adminLog')) {
                mkdir($dir, 755);
            }
            
            $content = date('Y-m-d H:i:s', $GLOBALS['startat']).' '.$GLOBALS['startat'].' ['.$duration.'s]'.' [uid='.$_SESSION['admin']['userId'].' '.$_SESSION['admin']['userName'].'] '.$_SERVER['REQUEST_METHOD']. ' '.$_SERVER['REQUEST_URI']."
";
            if($_SERVER['REQUEST_METHOD'] == 'POST')
            {
                foreach($_POST as $key=>$value)
                {
                    $content .= $key.'='.$value."
";
                }
            }
            $sqls = of_db::getQueryLog();

            if(count($sqls) > 100) 
            {
                $sqls = array_slice($sqls, 0, 100);
                $sqls[] = '... '.count($sqls).' sqls in total';
            }
            $content .= implode("
", $sqls)."

";
           
            file_put_contents($dir.DIRECTORY_SEPARATOR.date('Ymd').'.log', $content, FILE_APPEND);
            //   var_dump($dir.DIRECTORY_SEPARATOR.date('Ymd').'.log');
            // die();
        }
}

 这里要注意 dirname()函数 限制比较严格 函数返回路径中的目录部分 这个路径如果匹配不上的话 是找不到正确路径的


这里会记录到 用户信息 用户的操作 也就是对应的sql。
原文地址:https://www.cnblogs.com/yumingzhao/p/9713398.html