Ejemplo n.º 1
0
 /**
  * アクセス情報をログに記録する
  */
 public static function recAccessLog($logfile, $maxline = 100, $format = 'dataphp')
 {
     global $_conf, $_login;
     // ログファイルの中身を取得する
     if ($format == 'dataphp') {
         $lines = DataPhp::fileDataPhp($logfile);
     } else {
         $lines = FileCtl::file_read_lines($logfile);
     }
     if ($lines) {
         // 制限行調整
         while (sizeof($lines) > $maxline - 1) {
             array_pop($lines);
         }
     } else {
         $lines = array();
     }
     $lines = array_map('rtrim', $lines);
     // 変数設定
     $date = date('Y/m/d (D) G:i:s');
     // IPアドレスを取得
     if (array_key_exists('HTTP_X_REAL_IP', $_SERVER)) {
         $remote_addr = $_SERVER["HTTP_X_REAL_IP"];
     } else {
         $remote_addr = '';
     }
     // HOSTを取得
     if (array_key_exists('HTTP_X_REAL_IP', $_SERVER)) {
         $remote_host = gethostbyaddr($_SERVER['HTTP_X_REAL_IP']);
     } else {
         $remote_host = '';
     }
     if (!$remote_host) {
         $remote_host = gethostbyaddr($_SERVER["HTTP_X_REAL_IP"]);
     }
     if ($remote_host == $_SERVER["HTTP_X_REAL_IP"]) {
         $remote_host = '';
     }
     // UAを取得
     if (array_key_exists('HTTP_USER_AGENT', $_SERVER)) {
         $user_agent = $_SERVER['HTTP_USER_AGENT'];
     } else {
         $user_agent = '';
     }
     // リファラを取得
     if (array_key_exists('HTTP_REFERER', $_SERVER)) {
         $referrer = $_SERVER['HTTP_REFERER'];
     } else {
         $referrer = '';
     }
     $user = isset($_login->user_u) ? $_login->user_u : '';
     // 新しいログ行を設定
     $newdata = implode('<>', array($date, $remote_addr, $remote_host, $user_agent, $referrer, '', $user));
     //$newdata = htmlspecialchars($newdata, ENT_QUOTES);
     // まずタブを全て外して
     $newdata = str_replace("\t", "", $newdata);
     // <>をタブに変換して
     $newdata = str_replace("<>", "\t", $newdata);
     // 新しいデータを一番上に追加
     @array_unshift($lines, $newdata);
     $cont = implode("\n", $lines) . "\n";
     FileCtl::make_datafile($logfile, $_conf['p2_perm']);
     // 書き込み処理
     if ($format == 'dataphp') {
         DataPhp::writeDataPhp($logfile, $cont, $_conf['p2_perm']);
     } else {
         FileCtl::file_write_contents($logfile, $cont);
     }
     return true;
 }
Ejemplo n.º 2
0
Archivo: P2Util.php Proyecto: poppen/p2
 /**
  * アクセス(ログイン)情報をログに記録する
  *
  * @access  public
  * @return  boolean
  */
 function recAccessLog($logfile, $maxline = 100, $format = 'dataphp')
 {
     global $_conf, $_login;
     // ログファイルの中身を取得する
     $lines = array();
     if (file_exists($logfile)) {
         if ($format == 'dataphp') {
             $lines = DataPhp::fileDataPhp($logfile);
         } else {
             $lines = file($logfile);
         }
     }
     if ($lines) {
         // 制限行調整
         while (sizeof($lines) > $maxline - 1) {
             array_pop($lines);
         }
     } else {
         $lines = array();
     }
     $lines = array_map('rtrim', $lines);
     // 変数設定
     $date = date('Y/m/d (D) G:i:s');
     $user = isset($_login->user_u) ? $_login->user_u : "";
     // 新しいログ行を設定
     $newdata = implode('<>', array($date, $_SERVER['REMOTE_ADDR'], P2Util::getRemoteHost(), geti($_SERVER['HTTP_USER_AGENT']), geti($_SERVER['HTTP_REFERER']), '', $user));
     //$newdata = htmlspecialchars($newdata, ENT_QUOTES);
     // まずタブを全て外して
     $newdata = str_replace("\t", "", $newdata);
     // <>をタブに変換して
     $newdata = str_replace("<>", "\t", $newdata);
     // 新しいデータを一番上に追加
     @array_unshift($lines, $newdata);
     $cont = implode("\n", $lines) . "\n";
     FileCtl::make_datafile($logfile, $_conf['p2_perm']);
     // 書き込み処理
     if ($format == 'dataphp') {
         if (!DataPhp::writeDataPhp($logfile, $cont, $_conf['p2_perm'])) {
             return false;
         }
     } else {
         if (false === file_put_contents($logfile, $cont, LOCK_EX)) {
             trigger_error("file_put_contents(" . $logfile . ")", E_USER_WARNING);
             return false;
         }
     }
     return true;
 }