note 111097 rejected from function.long2ip by aharvey

From: Date: Mon, 14 Jan 2013 13:10:57 +0000
Subject: note 111097 rejected from function.long2ip by aharvey
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-193032@lists.php.net to get a copy of this message
Note Submitter: atlas_alexis at yahoo dot com ---- i make a small script for who is online but on users ip stored in db give me output 2130706433(ip2long) and i want to make to store the real ip like....123.2...... here is my code <?php require "connect.php"; require "functions.php"; // We don't want web bots scewing our stats: if(is_bot()) die(); $stringIp = $_SERVER['REMOTE_ADDR']; $intIp = long2ip($stringIp); // Checking wheter the visitor is already marked as being online: $inDB = mysql_query("SELECT 1 FROM tz_who_is_online WHERE ip=".$intIp); if(!mysql_num_rows($inDB)) { // This user is not in the database, so we must fetch // the geoip data and insert it into the online table: if($_COOKIE['geoData']) { // A "geoData" cookie has been previously set by the script, so we will use it // Always escape any user input, including cookies: list($city,$countryName,$countryAbbrev) = explode('|',mysql_real_escape_string(strip_tags($_COOKIE['geoData']))); } else { // Making an API call to Hostip: $xml = file_get_contents('http://api.hostip.info/?ip='.$stringIp); $city = get_tag('gml:name',$xml); $city = $city[1]; $countryName = get_tag('countryName',$xml); $countryName = $countryName[0]; $countryAbbrev = get_tag('countryAbbrev',$xml); $countryAbbrev = $countryAbbrev[0]; // Setting a cookie with the data, which is set to expire in a month: setcookie('geoData',$city.'|'.$countryName.'|'.$countryAbbrev, time()+60*60*24*30,'/'); } $countryName = str_replace('(Unknown Country?)','UNKNOWN',$countryName); // In case the Hostip API fails: if (!$countryName) { $countryName='UNKNOWN'; $countryAbbrev='XX'; $city='(Unknown City?)'; } mysql_query(" INSERT INTO tz_who_is_online (ip,city,country,countrycode) VALUES(".$intIp.",'".$city."','".$countryName."','".$countryAbbrev."')"); } else { // If the visitor is already online, just update the dt value of the row: mysql_query("UPDATE tz_who_is_online SET dt=NOW() WHERE ip=".$intIp); } // Removing entries not updated in the last 10 minutes: mysql_query("DELETE FROM tz_who_is_online WHERE dt<SUBTIME(NOW(),'0 0:10:0')"); // Counting all the online visitors: list($totalOnline) = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM tz_who_is_online")); // Outputting the number as plain text: echo $totalOnline; ?> and this is my page for functions: <?php function get_tag($tag,$xml) { preg_match_all('/<'.$tag.'>(.*)<\/'.$tag.'>$/imU',$xml,$match); return $match[1]; } function is_bot() { /* This function will check whether the visitor is a search engine robot */ $botlist = array("Teoma", "alexa", "froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot", "crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp", "msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz", "Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web spider", "WebAlta Crawler","TweetmemeBot", "Butterfly","Twitturls","Me.dium","Twiceler"); foreach($botlist as $bot) { if(strpos($_SERVER['HTTP_USER_AGENT'],$bot)!==false) return true; // Is a bot } return false; // Not a bot } ?> hey sombody can help me with this?

« previous php.notes (#193032) next »