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 中查找多个用户的帐户 [重复]