PHP 使用PHP和MySQL数据库批量查找IP地址(IPv6)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 使用PHP和MySQL数据库批量查找IP地址(IPv6)相关的知识,希望对你有一定的参考价值。

<?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;
        }

?>

以上是关于PHP 使用PHP和MySQL数据库批量查找IP地址(IPv6)的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 在 mySQL 中查找多个用户的帐户 [重复]

mysql数据库的 alter可否批量操作? 例如批量修改,批量删除这样?求思路,求解.!php!

php中的IP API查找优化

字谜查找程序 php mysql

php用IP查询归属地

Geoip IP Detect 使用 php 和 mysql 数据库