最近的一个项目 客户那边老是无缘无故的丢失文档 , 所以这边对后台的一些操作进行日志记录 代码如下
/**
* 删除文档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']."\n";
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
foreach($_POST as $key=>$value)
{
$content .= $key.'='.$value."\n";
}
}
$sqls = of_db::getQueryLog();
if(count($sqls) > 100)
{
$sqls = array_slice($sqls, 0, 100);
$sqls[] = '... '.count($sqls).' sqls in total';
}
$content .= implode("\n", $sqls)."\n\n";
file_put_contents($dir.DIRECTORY_SEPARATOR.date('Ymd').'.log', $content, FILE_APPEND);
// var_dump($dir.DIRECTORY_SEPARATOR.date('Ymd').'.log');
// die();
}
}
这里要注意 dirname()函数 限制比较严格 函数返回路径中的目录部分 这个路径如果匹配不上的话 是找不到正确路径的
这里会记录到 用户信息 用户的操作 也就是对应的sql。