<?
 
/**
 
 XIP Class - Proxy Detection and IP Functions class for PHP - File Name: iplog.php
 
 Copyright (C) 2004-2006 Volkan Küçükçakar. All Rights Reserved.
 
 (Volkan Kucukcakar)
 
 http://www.developera.com
 
 
 You are requested to retain this copyright notice in order to use
 
 this software.
 
 
 This program is free software; you can redistribute it and/or
 
 modify it under the terms of the GNU General Public License
 
 as published by the Free Software Foundation; either version 2
 
 of the License, or (at your option) any later version.
 
 
 This program is distributed in the hope that it will be useful,
 
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 
 GNU General Public License for more details.
 
 
 You should have received a copy of the GNU General Public License
 
 along with this program; if not, write to the  Free Software
 
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
*/
 
?>
 
<?     /*
 
       XIP Class - EXAMPLE 4 - iplog.php
 
       This example demonstrates:
 
       IP Log example using a flat text file (with exclusive file lock support via flock and semaphore files)
 
       Note: This is an extra example file that I have written upon request and may be a little out of XIP Class's scope
 
       */
 
?>
 
<?
 
function iplog($logfile,$ip){
 
     $lck=@fopen($logfile.'.lck', 'a+');//semaphore lock file
 
     if ($lck===false) return false;
 
     if ( flock($lck,LOCK_EX) ){
 
        //flock may not work on some file systems
 
        //You can handle a flock error here, it will try to continue working even if you do not handle. (ofcourse without file lock support)
 
        //May be you can use another way of exclusive file locking, ie. sem_acquire() approach
 
        //read php help for more info http://www.php.net/manual/en/function.flock.php
 
     }
 
     $fp = @fopen($logfile, 'a+');
 
     if ($fp===false) {
 
        fclose($lck);
 
        return false;
 
     }
 
     $logline=gmdate("M d Y H:i:s")." GMT, $ip\r\n";
 
     if (false===fwrite($fp,$logline)) return false;
 
     fclose($fp);
 
     flock($lck, LOCK_UN);
 
     fclose($lck);
 
     return true;
 
}
 
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
<html><head>
 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
 
<META HTTP-EQUIV="Expires" CONTENT="-1">
 
<title>XIP Class - developera.com/xip</title>
 
<body bgcolor="#FFFFFF" text="#000000">
 
<center>
 
<p><a href="proxydetect.php">Proxy Detection</a> | <a href="ipfunctions.php">IP Functions</a> | <a href="blacklist_local.php">Blacklist (Local)</a> | IP Log | <a href="CheckRBL.php">Blacklist (Check RBL)</a></p>
 
<p align="left"><font color="#FF6666">XIP Class - EXAMPLE 4 - iplog.php - </font><font color="#707070">IP Log example using a flat text file (with exclusive file lock support via flock and semaphore files)<br>Note: This is an extra example file that I have written upon request and may be a little out of XIP Class's scope</font></p>
 
<p>  </p>
 
  <table width="600" border="1" cellspacing="0" cellpadding="0">
 
    <tr>
 
      <td width="300">Your Proxy IP is</td>
 
      <td width="300"> 
 
 
<?
 
   require('../class.XIP.php');
 
   $XIP=new XIP();
 
   echo $XIP->IP['proxy'];
 
?>
 
 
      </td>
 
    </tr>
 
    <tr>
 
      <td>Your Client IP is</td>
 
      <td> 
 
      
 
<? echo $XIP->IP['client']; ?>
 
      
 
      </td>
 
    </tr>
 
  </table>
 
<p>
 
<?
 
   /*
 
    * Do not forget that client IP is always reported by gateway (or client unfortinately)
 
      By the way, this is a property of http proxy connection; not a weakness of XIP Class.
 
    * You can separately use/save $_SERVER['REMOTE_ADDR'] (or $XIP->IP['proxy']) in your logs for security.
 
    * To increase security, you can use $XIP->IP['client'] in conjunction with $XIP->IP['proxy'] (equals to $_SERVER['REMOTE_ADDR']),
 
      or you can do something with $XIP->IP['all']
 
   */
 
   //So, log both proxy and client IP for security!
 
   $ip=$XIP->IP['proxy']." (".$XIP->IP['client'].")";
 
   $logfile="log/iplog.txt";
 
   if (!iplog($logfile,$ip)) die("IP Log error, make sure you have created the log directory '".dirname($logfile)."' or copy the files '$logfile' and '$logfile.lck', make sure you have set the right permissions");
 
   echo "Your Proxy IP and Client IP addresses are successfully written to log file.";
 
?>
 
</p>
 
  <p>  </p>
 
  <p><strong>XIP Class<br>
 
  </strong>Proxy Detection and IP Functions class for PHP<strong><br>
 
  </strong><a href="http://www.developera.com/xip">www.developera.com/xip</a></p>
 
  <p>  </p>
 
</center>
 
</body>
 
</html>
 
 
 |