Return to Snippet

Revision: 68399
at January 16, 2015 13:45 by Hexahow


Initial Code
<?php
		
	//MYSQL configuration
	$mysql_server = "mysql_server.com";
	$mysql_user_name ="User ID";
	$mysql_user_pass ="password";
	
	//Connect to database
	$link = mysql_connect($mysql_server,$mysql_user_name,$mysql_user_pass) or die("could not connect to MySQL Database");
	
	//Check database connection
	if(!$link)
	{
		echo "Database error.";
	}
	else
	{
		mysql_select_db("ip2location") or die("could not select database");
		echo "Database is Connected .";
		echo "<br><br>";
	}
	
	//Display for user input
	echo "";
	echo "<title>IP Query in Bulk</title>";
	echo "
			<span>Upload IP list for validation:</span><br><br>
			<form action="" enctype="multipart/form-data" method="post">					
			<input name="uploaded_file" type="file" value=""><br>
			<input name="submit" type="submit" value="Upload & Process">
			</form>
		";
	echo "";

			
	//File submitted
	if(isset($_POST['submit']))
	{
		//Check for file error
		if($_FILES["uploaded_file"]["error"] > 0)
		{
			echo "Error :" .$_FILES["uploaded_file"]["error"]. "<br>";
		}
		else
		{	
			echo "Input File Path :" , realpath(dirname(__FILE__))  ;
			echo "<br>";
			echo "File Name : " .$_FILES["uploaded_file"]["name"]. "<br>";
			echo "Type : " .$_FILES["uploaded_file"]["type"]. "<br>";
			echo "Size : " .($_FILES["uploaded_file"]["size"]/ 1024). "KB<br>";
		}
		
		//Name the output file
		if(file_exists( "result.csv"))
		{
			$duplicatefile = "result.csv";
			unlink($duplicatefile);
			echo "Duplicate file deleted ! <br>";
		}
		
		//Check if uploaded file exists
		if(file_exists( $_FILES["uploaded_file"]["name"]))
		{
			echo"Uploaded file already exist, Please make sure that both file's content are same. <br>"	;
		}
		else
		{
			move_uploaded_file($_FILES["uploaded_file"]["tmp_name"],
			 $_FILES["uploaded_file"]["name"]);
		}
	
		//Open file from its location
		$file =  $_FILES["uploaded_file"]["name"];
		$ipfile = fopen($file,"r") or exit("unable to open file!");
		
		//To split up the IP Address and fetch data from server
		while(! feof($ipfile))
		{
			$iplist = stream_get_line($ipfile,100,",");
			
			$ipno = Dot2LongIPv6($iplist);
			$query = "SELECT * FROM ip2location_db11 WHERE ip_to >= $ipno order by ip_to limit 1 ";
			
			if(!$query)
			{
				echo "Error";
			}
			
			$result = mysql_query($query) or die("IP2Location Query Failed");
				
				
			while($row = mysql_fetch_array($result,MYSQL_ASSOC))
				{ 
					$current = "\"$iplist\",\"$ipno\",\"{$row['country_code']}\",\"{$row['country_name']}\",\"{$row['region_name']}\",\"{$row['city_name']}\",\"{$row['latitude']}\",\"{$row['longitude']}\",\"{$row['zip_code']}\",\"{$row['time_zone']}\"" ;
					
					//Output file to the path you want 
						$ans = "result.csv";
						$fp = fopen($ans,"a") or die("couldn't open $ans for writing");
						fwrite($fp,$current) or die ("couldn't write values to file!");
						fclose($fp);				 				
				}	
		}		
				echo "Result File Path : ", realpath($ans);
				echo "<br>";	
				
		mysql_free_result($result); mysql_close($link);
	}			
	
			
	// Function to convert IP address to IP number (IPv6)
        function Dot2LongIPv6 ($IPaddr) {
            $int = inet_pton($IPaddr);
            $bits = 15;
            $ipv6long = 0;
            while($bits >= 0){
                $bin = sprintf("%08b", (ord($int[$bits])));
                if($ipv6long){
                    $ipv6long = $bin . $ipv6long;
                }
                else{
                    $ipv6long = $bin;
                }
                $bits--;
            }
            $ipv6long = gmp_strval(gmp_init($ipv6long, 2), 10);
            return $ipv6long;
        }

?>

Initial URL
http://ip2location.com/tutorials/lookup-ip-address-in-bulk-using-php-and-mysql-database

Initial Description
The code below can be used to lookup IP address in bulk in return of geolocation information using PHP programming languages and MySQL database. In this tutorial, we use the IP2Location LITE database to lookup country of origin from the visitor's IP address. Free databases are available for download at IP2Location LITE database.

Initial Title
IP Address (IPv6) Lookup in Bulk Using PHP and MySQL Database

Initial Tags
mysql, php, ip

Initial Language
PHP