2013年10月7日 星期一

記錄 Client 端 IP

因為擔心 NO-IP 無法正常運作

所以,在開機後,送一個 HTTP REQUEST ( GET ) 到另一台主機

主要是為了取得開機後所產生的 IP

以下是 負責記錄 Client 傳送過來的 IP 位置





<?php
/*

    write log : resp.php?w=pi
    read log  : resp.php?r=pi

*/

$log_file = 'chk.log';
$today_dt = date("Y-m-d", time());
$ip_addr = trim($_SERVER['REMOTE_ADDR']);

//  Initial Log File.
if (!file_exists($log_file))
{
    $data[$today_dt] = array();
    file_put_contents($log_file, serialize($data));
}

$data = unserialize(file_get_contents($log_file));
$today_arr = $data[$today_dt];

if ($_GET['w']=='pi')
{
    //  Logger Data.
    
    end($today_arr);
    $today_arr_key = trim(key($today_arr));

    if ($ip_addr != $today_arr[$today_arr_key]['ip'])
    {
        $data[$today_dt][] = array('ip'=>$ip_addr, 
                                   'cnt'=>1, 
                                   'time'=>date("Y-m-d H:i:s", time()));
    }else{
        $data[$today_dt][$today_arr_key]['cnt']++;
        $data[$today_dt][$today_arr_key]['time'] = date("Y-m-d H:i:s", time());
    }
    file_put_contents($log_file, serialize($data));
    echo "OK";
    
}
elseif ($_GET['r']=='pi')
{
    //  show log data
    
    $today_arr_reverse = array_reverse($today_arr);
    $str = '';
    foreach($today_arr_reverse as $d)
    {
        if ($str=='')
        {
            printf("

%s

", $d['ip']); } $str .= sprintf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>", $d['time'], $d['ip'], $d['cnt']); } printf("<table border=\"1\"><tr><th>time</th><th>ip</th><th>cnt</th></tr>%s</table>", $str); }else{ // Just say hi. echo "hi."; } exit; ?>


沒有留言:

張貼留言