php 读取 google 地图经纬度

 更新时间:2016年11月25日 15:59  点击:2156

参考了网上部分资料,自己改写了一个方便的获取经纬度信息的类Geo,其中Latitude和Longtitude分别是纬度和经度。其中最重要的构造函数就是传入地名,通过Webrequest从Google Map获得经纬度值,在含有地理位置信息的项目里可以很方便的调用,即Geo g = new Geo("北京师范大学");然后g.Latitude和g.Longtitude就是北京师范大学的纬度和经度了,它们分别是39.9614580,116.3692820。Geo的实现如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;

namespace YourNameSpace
{
    /// <summary>
    /// a class for latitude and longtitude
    /// </summary>
    [Serializable]
    public class Geo
    {
        /// <summary>
        /// latitude
        /// </summary>
        private string _latitude = "";

        /// <summary>
        /// longtitude
        /// </summary>
        private string _longtitude = "";

        /// <summary>
        /// default constructor
        /// </summary>
        public Geo()
        {

        }

        /// <summary>
        /// construct geo given latitude and longtitude
        /// </summary>
        /// <param name="latitude"></param>
        /// <param name="longtitude"></param>
        public Geo(string latitude, string longtitude)
        {
            _latitude = latitude;
            _longtitude = longtitude;
        }
       
        /// <summary>
        /// construct geo given name of a place
        /// </summary>
        /// <param name="location"></param>
        public Geo(string location)
        {
            string output = "csv";
            string url = string.Format("http://maps.google.com/maps/geo?q={0}&output={1}", location, output);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (StreamReader sr = new StreamReader(response.GetResponseStream()))
            {
                string[] tmpArray = sr.ReadToEnd().Split(',');
                _latitude = tmpArray[2];
                _longtitude = tmpArray[3];
            }
        }

        /// <summary>
        /// get latitude(纬度)
        /// </summary>
        public string Latitude
        {
            get { return _latitude; }
            set { _latitude = value; }
        }

        /// <summary>
        /// get longtitude(经度)
        /// </summary>
        public string Longtitude
        {
            get { return _longtitude; }
            set { _longtitude = value; }
        }
    }

<?php教程
//===================================
//
// 功能:IP地址获取真实地址函数
// 参数:$ip - IP地址
//
//===================================
function convertip($ip) {
$dat_path = '../QQWry.Dat';       
if(!preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip)) {
return 'IP Address Error';

if(!$fd = @fopen($dat_path, 'rb')){
return 'IP date file not exists or access denied';

$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3]; 
$DataBegin = fread($fd, 4);
$DataEnd = fread($fd, 4);
$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = 0;
$EndNum = $ipAllNum; 
while($ip1num>$ipNum || $ip2num<$ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return 'System Error';
}
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);

if($ip1num > $ipNum) {
$EndNum = $Middle;
continue;

$DataSeek = fread($fd, 3);
if(strlen($DataSeek) < 3) {
fclose($fd);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32); 
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return 'Unknown';
}
$BeginNum = $Middle;
}

$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
if(strlen($ipSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($fd, $ipSeek);
$ipFlag = fread($fd, 1);
}
if($ipFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0)){
$ipAddr2 .= $char;
}
}
fclose($fd); 
if(preg_match('/http/i', $ipAddr2)) {
$ipAddr2 = '';
}
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
$ipaddr = 'Unknown';
}
return $ipaddr;
}
?>


使用说明:
1、先把上面的代码保存为php文件,然后在网上下载纯真IP数据库教程QQWry.Dat,修改上述函数中的数据库连接路径代码“$dat_path = '../QQWry.Dat';”;
2、调用函数:
<?php
echo convertip($navinfor['infoip']);
?>

这个脚本一次上传多个文件。对于一次上传多个文件,首先创建一个按规定的文件数表上载。在创建表时,文件应该分别张贴在每一行和列。在之后安排文件的确切位置,你必须设置为UFile的,键入等于文件输入姓名,身份证UFile的大小等于等于50。类似的,你必须设置为居中对齐,投入,提交类型,提交和上传值名称。关闭表逐一并关闭窗体从该数据进行访问。经过开发了GUI在HTML页面中,您将使用PHP代码的。

让我们来看看设计图形用户界面形式的步骤:

设置标准的HTML来命名的doctype公众公开的HTML代码

开始与<HTML> HTML标记,开始用的<head>代码标记;

名称该程序的名称,开始在身体的程序代码。

确定表格的宽度,边框,对齐和颜色看上去就在输出屏幕。

开始形式使用表单操作命令。定义表单动作等于“multiple_upload_ac.php”,方法等于“后”,字符编码=“mutipart /表单数据”,名称等于“Form1的”和id =“Form1的”

载于下一行的表结构。设置表格的宽度为100%,边境= 0(可设置2个或3点厚),cellpading,可以隐藏和表的颜色。

命名的如“多文件上传粗体字母代码”称号

现在,选择一个文件之一,输入名称,类型,ID和文件的大小,并呼吁该计划之一之一。

对于提交按钮,设置对齐等于中心,输入类型等于提交,提交相同的名称和价值等于上传。

关闭表,然后关闭该窗体。

关闭HTML文件的身体和结束标记。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Multiple Files Upload </TITLE>
<BODY>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form action="multiple_upload_ac.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td><strong>Multiple Files Upload </strong></td>
</tr>
<tr>
<td>Select First file
<input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
</tr>
<tr>
<td>Select Second file
<input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
</tr>
<tr>
<td>Select Third file
<input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
</tr>
<tr>
<td align="center"><input type="submit" name="Submit" value="Upload" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</BODY>
</HTML>


现在,你将不得不使用PHP程序中的多个上传文件的GUI这个HTML代码。为此,你必须先设置所有三个文件的路径。这些文件可以发布,但变量$ _FILES命令,上载文件。现在,你应该从复制文件的路径设置到目标存储空间。在复制文件时,也必须给予,在处理工作,设置文件名,文件大小,文件的所有三个文件类型的临时名称。也给印刷给予命令'IMG的src'的路径和文件大小的屏幕上的图像文件的命令。现在,使用命令来打印文件错误或进程的成功。此后,申请条件语句打印的失败上传分别命令。

见的步骤:

开始PHP标签“?PHP的

第一组的所有三个文件的路径。

复制文件从源头到目的地的地方是暂时的名称上载

给印刷的文件名,文件大小,文件类型和每个文件的图像源的命令进行上传。

显示给予命令错误或文件的成功。

使用条件语句打印上载或每个文件的失败。

<?php
// Setting path for files

$path1= "C:\wamp\www\projects\public_html\upload_file\".$_FILES['ufile']['name'][0];
$path2= "C:\wamp\www\projects\public_html\upload_file\".$_FILES['ufile']['name'][1];
$path3= "C:\wamp\www\projects\public_html\upload_file\".$_FILES['ufile']['name'][2];

//copy file to where you want to store file

copy($_FILES['ufile']['tmp_name'][0], $path1);
copy($_FILES['ufile']['tmp_name'][1], $path2);
copy($_FILES['ufile']['tmp_name'][2], $path3);

echo "File Name :".$_FILES['ufile']['name'][0]."<BR/>";
echo "File Size :".$_FILES['ufile']['size'][0]."<BR/>";
echo "File Type :".$_FILES['ufile']['type'][0]."<BR/>";
echo "<img src="$path1" width="150" height="150">";
echo "<P>";

echo "File Name :".$_FILES['ufile']['name'][1]."<BR/>";
echo "File Size :".$_FILES['ufile']['size'][1]."<BR/>";
echo "File Type :".$_FILES['ufile']['type'][1]."<BR/>";
echo "<img src="$path2" width="150" height="150">";
echo "<P>";

echo "File Name :".$_FILES['ufile']['name'][2]."<BR/>";
echo "File Size :".$_FILES['ufile']['size'][2]."<BR/>";
echo "File Type :".$_FILES['ufile']['type'][2]."<BR/>";
echo "<img src="$path3" width="150" height="150">";


//code to display the error or success.

$filesize1=$_FILES['ufile']['size'][0];
$filesize2=$_FILES['ufile']['size'][1];
$filesize3=$_FILES['ufile']['size'][2];

if($filesize1 && $filesize2 && $filesize3 != 0)
{
echo "<BR />";
echo "your files have entered successfully";
}

else {
echo "ERROR.....";
}

if($filesize1==0) {
echo "There're something problem in your first file!";
echo "<BR />";
}

if($filesize2==0) {
echo "There're something problem in your second file!";
echo "<BR />";
}

if($filesize3==0) {

echo "There're something problem in your third file!";
echo "<BR />";
}

?>

这个例子将解释您如何上传FTP服务器上的文件。 ftp_put()命令允许上传在服务器上现有的文件。对于上传到FTP服务器的文件,首先你必须先登录到FTP服务器上,搜索源文件上传。定义源文件的目标路径。

然后检查基本连接。如果没有连接好,建立了连接设置使用ftp_connect($ ftp_server)。

检查FTP服务器连接的用户名。

上传文件使用ftp_put()函数,你必须确定连接ID,目标文件,源文件和FTP_Binary。

检查上传的状态,并关闭FTP连接。

结束该程序。

<?php
$ftp_server = "<IP>";
$ftp_user_name = "<username>";
$ftp_user_pass = "<password>";
$destination_file = "C:\wamp\www\projects\public_html\upload_file\".$_FILES['image']['name'];
$sourcefile = $_FILES['image']['name'];

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
exit;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
}

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); // line 30

// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// close the FTP stream
ftp_close($conn_id);

?>

此脚本防止文件被链接到其他文件,因为这迫使脚本文件被下载之前在下载开始。这个脚本是非常重要的高度机密的文件。

在此脚本,filter_var()用于过滤文件和有效的字符串验证的文件,该文件使用过滤器将下载的文件FILTER_SANITIZE_STRING。

用PHP标记(“?php)中,使用filter_var()来过滤下载的文件,并验证从阵列(mytextfile.txt)文件,初始化打印与模具的命令脚本的输出。结束PHP的标记。见例子:


<?php
// filter
$myFile = filter_var($_GET['file'], FILTER_SANITIZE_STRING);

// Then validate
$valid = array('mytextfile.txt', 'mytextfile.txt');
If (!in_array($myFile, $valid)) {
die('H; This is for validation');
}

include($myFile);

?>

[!--infotagslink--]

相关文章