当前位置:编程学习 > C#/ASP.NET >>

关于用户登录以后,显示登录地点问题(结帖率100%)

最近在做一个网站,但是要有一个功能,就是用户登录以后显示用户登录的地点,
比如说 “张三”登录以后显示,“您好您现在的位置是江苏苏州市”,请问如何
做到呢?请牛人们给小弟弟好好上上课!感激不尽! 查询登录地点 --------------------编程问答-------------------- 根据客户端IP来确定位置 --------------------编程问答-------------------- 添加web引用

http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?op=getCountryCityByIp

            IpAddressSearchWebService webService = new IpAddressSearchWebService();
            string[] strArea = webService.getCountryCityByIp(strIP);
            return strArea[1]; --------------------编程问答-------------------- 获取客户端IP,判断下客户位置就好了! --------------------编程问答--------------------
引用 2 楼 liuchaolin 的回复:
添加web引用

http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?op=getCountryCityByIp

            IpAddressSearchWebService webService = new IpAddressSearchWebService();
            string[] strArea = webService.getCountryCityByIp(strIP);
            return strArea[1];
+1 --------------------编程问答--------------------
//这个是获取客户的IP
string user_IP = "";
            if (Request.ServerVariables["HTTP_VIA"] != null)
            {
                user_IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            }
            else
            {
                user_IP = Request.ServerVariables["REMOTE_ADDR"].ToString();
            }
//下面是把这个IP到这个接口数据库进行转换为实际的地址
            string url_str = "";
            url_str = "http://whois.pconline.com.cn/ip.jsp?ip=" + user_IP;
            WebRequest request = WebRequest.Create(url_str);
            WebResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
            url_str = reader.ReadToEnd();
            reader.Close();
            reader.Dispose();
            response.Close();
          Label1.Text=url_str;//这个就是获得位置了 --------------------编程问答-------------------- http://whois.pconline.com.cn/ip.jsp这个接口永久免费的吗?? --------------------编程问答--------------------
引用 6 楼 jiang199244 的回复:
http://whois.pconline.com.cn/ip.jsp这个接口永久免费的吗??

2楼给的webservice我用了很久了。 --------------------编程问答-------------------- 根据客户端IP来确定位置  --------------------编程问答--------------------
引用 5 楼 zcxverygood123456 的回复:
//这个是获取客户的IP
string user_IP = "";
            if (Request.ServerVariables["HTTP_VIA"] != null)
            {
                user_IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            }
            else
            {
                user_IP = Request.ServerVariables["REMOTE_ADDR"].ToString();
            }
//下面是把这个IP到这个接口数据库进行转换为实际的地址
            string url_str = "";
            url_str = "http://whois.pconline.com.cn/ip.jsp?ip=" + user_IP;
            WebRequest request = WebRequest.Create(url_str);
            WebResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
            url_str = reader.ReadToEnd();
            reader.Close();
            reader.Dispose();
            response.Close();
          Label1.Text=url_str;//这个就是获得位置了


 首先感谢楼主!小弟试了一下楼主的代码,但是Label1显示的是“本机地址”四个字。不知道哪里错了! --------------------编程问答--------------------
引用 2 楼 liuchaolin 的回复:
添加web引用

http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?op=getCountryCityByIp

            IpAddressSearchWebService webService = new IpAddressSearchWebService();
            string[] strArea = webService.getCountryCityByIp(strIP);
            return strArea[1];


 首先小弟表示感谢,但是可以说的具体点吗?或者多附点代码,让小弟看看,小弟菜鸟,还望赐教! --------------------编程问答--------------------


引用 10 楼 NGAER 的回复:
Quote: 引用 2 楼 liuchaolin 的回复:

添加web引用

http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?op=getCountryCityByIp

            IpAddressSearchWebService webService = new IpAddressSearchWebService();
            string[] strArea = webService.getCountryCityByIp(strIP);
            return strArea[1];


 首先小弟表示感谢,但是可以说的具体点吗?或者多附点代码,让小弟看看,小弟菜鸟,还望赐教!
--------------------编程问答--------------------
引用 11 楼 liuchaolin 的回复:



Quote: 引用 10 楼 NGAER 的回复:

Quote: 引用 2 楼 liuchaolin 的回复:

添加web引用

http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?op=getCountryCityByIp

            IpAddressSearchWebService webService = new IpAddressSearchWebService();
            string[] strArea = webService.getCountryCityByIp(strIP);
            return strArea[1];


 首先小弟表示感谢,但是可以说的具体点吗?或者多附点代码,让小弟看看,小弟菜鸟,还望赐教!

我想点击对我有用的,点击错了
  为什么我用查出来的的地址是“中国移动”呢? --------------------编程问答-------------------- 贴一段代码。用新浪的接口:
if (context.Request.ServerVariables["HTTP_VIA"] != null) //得到穿过代理服务器的ip地址
            {
                UserIP = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            }
            else
            {
                UserIP = context.Request.ServerVariables["REMOTE_ADDR"].ToString();
            }

string json = new HttpClient("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + UserIP).GetString();
                if (StringPlus.IsNotNull(json))
                {
                    JsonData jd = JsonMapper.ToObject(json);
                    if (jd["ret"].IsInt && (int)jd["ret"] == 1)
                    {
                        string province = jd["province"].ToString();
                        string city = jd["city"].ToString();
                        string isp = jd["isp"].ToString();
                        if (province == city)
                        {
                            address = province + " " + isp;
                        }
                        else
                        {
                            address = province + city + " " + isp;
                        }
                    }
                } --------------------编程问答--------------------
引用 13 楼 mayee 的回复:
贴一段代码。用新浪的接口:
if (context.Request.ServerVariables["HTTP_VIA"] != null) //得到穿过代理服务器的ip地址
            {
                UserIP = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            }
            else
            {
                UserIP = context.Request.ServerVariables["REMOTE_ADDR"].ToString();
            }

string json = new HttpClient("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + UserIP).GetString();
                if (StringPlus.IsNotNull(json))
                {
                    JsonData jd = JsonMapper.ToObject(json);
                    if (jd["ret"].IsInt && (int)jd["ret"] == 1)
                    {
                        string province = jd["province"].ToString();
                        string city = jd["city"].ToString();
                        string isp = jd["isp"].ToString();
                        if (province == city)
                        {
                            address = province + " " + isp;
                        }
                        else
                        {
                            address = province + city + " " + isp;
                        }
                    }
                }


我试了一下,但是报错!不知道是怎么回事! --------------------编程问答-------------------- 要嘛,你有自己的IP和省份城市地址对应表。要嘛你调用第三方这类的接口来做。
这个没啥好说的。
--------------------编程问答-------------------- 引用“首先感谢楼主!小弟试了一下楼主的代码,但是Label1显示的是“本机地址”四个字。不知道哪里错了!”
======================
你在本机运行,当然显示“本机地址”,你把程序放到服务器,然后你再访问,就显示地理位置了。 --------------------编程问答-------------------- 你直接在地址栏输入这个地址:
http://whois.pconline.com.cn/ip.jsp?ip=202.105.179.122
显示的结果是:广东省珠海市 电信IDC机房

你不想要"电信IDC机房",可以截止字符串,就会得到广东省珠海市 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 14 楼 NGAER 的回复:
Quote: 引用 13 楼 mayee 的回复:

贴一段代码。用新浪的接口:
if (context.Request.ServerVariables["HTTP_VIA"] != null) //得到穿过代理服务器的ip地址
            {
                UserIP = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            }
            else
            {
                UserIP = context.Request.ServerVariables["REMOTE_ADDR"].ToString();
            }

string json = new HttpClient("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + UserIP).GetString();
                if (StringPlus.IsNotNull(json))
                {
                    JsonData jd = JsonMapper.ToObject(json);
                    if (jd["ret"].IsInt && (int)jd["ret"] == 1)
                    {
                        string province = jd["province"].ToString();
                        string city = jd["city"].ToString();
                        string isp = jd["isp"].ToString();
                        if (province == city)
                        {
                            address = province + " " + isp;
                        }
                        else
                        {
                            address = province + city + " " + isp;
                        }
                    }
                }


我试了一下,但是报错!不知道是怎么回事!


你把context.去掉,直接用Request吧。这个context是在ashx文件中用到的
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,