:: กลับหน้าแรก :: แสดงเนื้อหาทั้งหมด ::
4.23 ใช้ php อ่านข้อมูลจาก /var/log/maillog: เพื่อรายงานสถิติการใช้ e-mail ของบุคลากร
วันหนึ่งผมอ่านข้อมูลการเข้าใช้ e-mail จาก /var/www/html/mail/database/username_yn1.yonok.ac.th/inbox โดยเช็คจากเวลา update filectime() แต่พบว่าข้อมูลที่ได้คือ ไม่รวมไปถึง user ที่ใช้ outlook อ่าน e-mail ผ่าน pop3 จึงต้องไปอ่านข้อมูลการเข้าใช้ e-mail จากแฟ้ม /var/log/maillog ทำให้รายงายได้ละเอียดขึ้น สามารถดูผลของโปรแกรมนี้ที่ http://www.isinthai.com/mail/database/index.php
อันที่จริง โปรแกรมนี้จะอยู่ที่ไหนก็ได้ แต่ผมเก็บไว้ที่นี่ เพราะห้องนี้ยังไม่เก็บอะไรเกี่ยงกับ mail ที่สำคัญ แต่สิ่งที่ต้องทำคือการ chmod 644 maillog แต่เดิมคุณสมบัติของแฟ้มเป็น 600 จะใช้ php ของ apache ไปอ่านมาไม่ได้
ตัวอย่างโปรแกรม /var/www/html/mail/database/index.php
<html><head><title>Username of /var/log/maillog</title></head>
<body bgcolor=gray topmargin=0 leftmargin=0><font face="fixedsys" size=0><?
$datefull = date("F d, Y");
if(date("j") < 10) {$d = date("M")." ".date("j");}else{$d = date("M j");}
echo "Today : <font color=yellow>".$datefull."</font><br>";
echo "Last login: <a href=index.php?act=total>total</a> ";
if ($_GET['act'] <> "view" && $_GET['act'] <> "total") {
echo ", <a href=index.php?act=view>today</a> ";
} else {
echo "<ol><font color=white>";
$ar = file("/var/log/maillog");
if ($_GET['act'] == "total") { $max = 0; } else { $max = count($ar) - 500; }
$j = 0;
for ($i=count($ar);$i>=$max;$i--) {
if (strpos($ar[$i],"Login user=") && _
(strpos($ar[$i],"$d") > -1 || $_GET['act'] == "total")) {
$user = stristr($ar[$i],"user=");
$uofar = substr($user,5,strpos($user," ")-5);
$found = "no";
for($k=0;$k<$j;$k++) {
if (strpos($ur[$k],"$uofar") > -1) { $found = "yes"; }
}
if ($found == "no") {
if (strpos($ar[$i],"host=yonok.ac.th") == false) {
$p="pop";
} else {
$p=" ";
}
$ur[$j] = $uofar." <font color=black>".substr($ar[$i],7,8)."</font> ".$p;
$ut[$j] = $uofar." <font color=black>".substr($ar[$i],0,6)."</font> ".$p;
$j = $j + 1;
}
}
}
for ($i=0;$i<$j;$i++) {
if ($_GET['act'] == "total") {
echo "<li>".$ut[$i];
} else {
echo "<li>".$ur[$i];
}
}
}
?>
</ol></body></html>
|