最近的一个项目 客户那边老是无缘无故的丢失文档 , 所以这边对后台的一些操作进行日志记录 代码如下
/** * 删除文档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。