php导出日志的问题(急) 小弟把网站管理员admin用户的操作日志都记录到数据库中,现在需要添加一个导出日志功能,具体可以用什么方法实现啊?查找数据库-》把日志信息写入txt文件中-》提供用户下载。请各位大牛帮帮忙谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查找数据库-》把日志信息写入txt文件中-》提供用户下载。不就这样吗你都很清楚了啊 进入一个页面直接弹出对话框下载,相当于点击过<a href="test.tex">链接一样 说的详细一点,首先申请一个存储结果的全局变量$logs = '';就是连接数据库,用select语句查询你的操作记录,将结果集返回给一个变量$res再用foreach循环遍历这个变量$res,循环体中,将每一行记录都追加给$logsforeach($res as $key => $value){ $logs .= $value;}然后用file_put_contents函数将变量$logs输出到文件即可。 //获取数据部分---------------------------------- //与数据库连接部分略,这个你自己写 $out = '';//定义输出变量 $query = mysql_query("select * form table where ...");//具体自己写 while($re = mysql_fetch_assoc($query)){ $out .= $re['字段名1']."--".$re['字段名2']."\n";//可以更多的字段,自己加 }//写入文件部分----------------------------------- $title = "backup"; $filepath = "data"; //输出文件的目录, $filename = $title . ".txt"; //文件标题也可以用日期时间来表示 //$filename = date("Y-m-d H:i:s",time()).".txt"; //如果已经存在,就删除,并重新生成文件 $realfilename = dirname(__FILE__)."/data/".$filename ; if(file_exists($realfilename)){ unlink($realfilename); } if($out !=''){ $out = strip_tags($out); if(!is_dir($filepath)){ mkdir($filepath); } if($fp = fopen($filepath."/".$filename,'w')){ if(fwrite($fp,$out)===FALSE){ echo "不能写入文件,请检查权限"; } }else{ echo "不能打开文件,请检查权限"; } fclose($fp); }//下载部分-------------------------------- //Begin下载到客户端开始 $downfile = $filepath .'/'.$filename; header("Content-Type: application/force-download"); header("Content-Length: " . filesize($downfile)); header("Content-Disposition: attachment; filename=".$filename); readfile($downfile); //End下载到客户端结束注意如果是linux niux空间 “data”文件夹要设置成可读写(0777);window空间没有限制。写入文件 和 下载 在本地已经测试通过了。你可以把获取数据部分只用一句 : $out = 'this is test 这是测试'; 来验证下面代码的可用性。然后就可以专心做读数据的那部分。 你要的这个功能显然是给管理员用的,把上面的文件保存成“down.php”当你 点 “<a href="down.php">下载日志</a>”的时候, down.php就会读取数据库,并在data文件夹中生成 backup.txt文件,并且浏览器会自动弹出下载存储对话框,点确定,就可以保存到本地电脑。 做了一个完整版的:两个文件:a.html down.php在本目录下新建文件夹 data (window用户可以省略这一步,程序会自动生成)a.html<a href="down.php">下载日志</a>down.php<?PHP//数据获取部分$out = '这是测试';//由于没有你的数据库,所以只能用一个字符串来代替日志数据。//--------------------//写入文件部分----------------------------------- $title = "backup"; $filepath = "data"; //输出文件的目录, $filename = $title . ".txt"; //文件标题也可以用日期时间来表示 //$filename = date("Y-m-d H:i:s",time()).".txt"; //如果已经存在,就删除,并重新生成文件 $realfilename = dirname(__FILE__)."/data/".$filename ; if(file_exists($realfilename)){ unlink($realfilename); } if($out !=''){ $out = strip_tags($out); if(!is_dir($filepath)){ mkdir($filepath); } if($fp = fopen($filepath."/".$filename,'w')){ if(fwrite($fp,$out)===FALSE){ echo "不能写入文件,请检查权限"; } }else{ echo "不能打开文件,请检查权限"; } fclose($fp); }//下载部分-------------------------------- //Begin下载到客户端开始 $downfile = $filepath .'/'.$filename; header("Content-Type: application/force-download"); header("Content-Length: " . filesize($downfile)); header("Content-Disposition: attachment; filename=".$filename); readfile($downfile); //End下载到客户端结束?>这个完全可用,本地验证通过。 经典的笛卡尔乘积代码,要怎么修改它? 递归出现死循环,怎么解决 求一个ajax上传图片的代码 PHP全局变量跟JS全局变量概念有什么不一样? 求一mysql数据库解决办法 如何获得本机的计算机名? 小弟问两个关于textarea的问题 调查:大家开发PHP的平台是什么? 有没有人写过 “php类”的东东 网站一直处于加载状态,重启路由器问题即可解决 获取客户端网卡MAC地址 preg_replace 正则替换,紧急求助,高手请进!!!
首先申请一个存储结果的全局变量$logs = '';
就是连接数据库,用select语句查询你的操作记录,将结果集返回给一个变量$res
再用foreach循环遍历这个变量$res,循环体中,将每一行记录都追加给$logsforeach($res as $key => $value){
$logs .= $value;
}然后用file_put_contents函数将变量$logs输出到文件即可。
//获取数据部分----------------------------------
//与数据库连接部分略,这个你自己写
$out = '';//定义输出变量
$query = mysql_query("select * form table where ...");//具体自己写
while($re = mysql_fetch_assoc($query)){
$out .= $re['字段名1']."--".$re['字段名2']."\n";//可以更多的字段,自己加
}
//写入文件部分-----------------------------------
$title = "backup";
$filepath = "data"; //输出文件的目录,
$filename = $title . ".txt"; //文件标题也可以用日期时间来表示
//$filename = date("Y-m-d H:i:s",time()).".txt";
//如果已经存在,就删除,并重新生成文件
$realfilename = dirname(__FILE__)."/data/".$filename ;
if(file_exists($realfilename)){
unlink($realfilename);
}
if($out !=''){
$out = strip_tags($out); if(!is_dir($filepath)){
mkdir($filepath);
}
if($fp = fopen($filepath."/".$filename,'w')){
if(fwrite($fp,$out)===FALSE){
echo "不能写入文件,请检查权限";
}
}else{
echo "不能打开文件,请检查权限";
}
fclose($fp);
}
//下载部分--------------------------------
//Begin下载到客户端开始
$downfile = $filepath .'/'.$filename;
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($downfile));
header("Content-Disposition: attachment; filename=".$filename);
readfile($downfile);
//End下载到客户端结束
注意如果是linux niux空间 “data”文件夹要设置成可读写(0777);window空间没有限制。写入文件 和 下载 在本地已经测试通过了。
你可以把获取数据部分只用一句 : $out = 'this is test 这是测试'; 来验证下面代码的可用性。然后就可以专心做读数据的那部分。
把上面的文件保存成“down.php”
当你 点 “<a href="down.php">下载日志</a>”的时候, down.php就会读取数据库,并在data文件夹中生成 backup.txt文件,并且浏览器会自动弹出下载存储对话框,点确定,就可以保存到本地电脑。
两个文件:a.html down.php
在本目录下新建文件夹 data (window用户可以省略这一步,程序会自动生成)a.html<a href="down.php">下载日志</a>
down.php<?PHP
//数据获取部分$out = '这是测试';//由于没有你的数据库,所以只能用一个字符串来代替日志数据。//--------------------
//写入文件部分-----------------------------------
$title = "backup";
$filepath = "data"; //输出文件的目录,
$filename = $title . ".txt"; //文件标题也可以用日期时间来表示
//$filename = date("Y-m-d H:i:s",time()).".txt";
//如果已经存在,就删除,并重新生成文件
$realfilename = dirname(__FILE__)."/data/".$filename ;
if(file_exists($realfilename)){
unlink($realfilename);
}
if($out !=''){
$out = strip_tags($out); if(!is_dir($filepath)){
mkdir($filepath);
}
if($fp = fopen($filepath."/".$filename,'w')){
if(fwrite($fp,$out)===FALSE){
echo "不能写入文件,请检查权限";
}
}else{
echo "不能打开文件,请检查权限";
}
fclose($fp);
}
//下载部分--------------------------------
//Begin下载到客户端开始
$downfile = $filepath .'/'.$filename;
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($downfile));
header("Content-Disposition: attachment; filename=".$filename);
readfile($downfile);
//End下载到客户端结束?>这个完全可用,本地验证通过。