最近公司新加了一个需求,根据用户登录的IP地址判断是否重复登录,重复登录就进行逼退,那么怎么获取到浏览器的IP地址呢?最后发现搜狐提供了一个JS接口,可以通过它获取到客户端的IP。

接口地址如下:

http://pv.sohu.com/cityjson?ie=utf-8

在浏览器输入,返回了这些信息:

返回了一个returnCitySN变量,这是一个json对象。里面保存了ip,id和城市名字。

查询代码如下:

 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script type="text/javascript">
document.write(returnCitySN["cip"]+','+returnCitySN["cname"])
</script>

这样我们写出IP地址和城市名称,我们判断是否重复登录就只需判断IP地址是否相同。

接口代码如下:

$(function() {

    //IP地址异地判断

    var UserPhoneNum = getCookie("UserPhoneNum");
var ipinfo = {
"UserPhoneNum": '86//' + UserPhoneNum,
"IP": returnCitySN["cip"]
} $.ajax({
url: "https://www.xxxxxxxxx.cn/xxxxxx/checklogin/",
data: ipinfo,
type: "get",
success: function(data) {
if(JSON.parse(data).state === 200) { } else {
window.location.href = 'login.html';
alert("您的账号已在别处登录,请退出再进行登录!")
}
},
error: function() {
alert("登录失效");
}
}); })

我们把IP地址取到,在登录的时候我们通过接口参数上传给后台进行储存,然后通过上面这个接口判断浏览器IP是否和登录时IP一致,不一致就弹框提示并返回登录界面;

微信小程序获取IP:

地址如下:

https://fangyuanxiaozhan.com/get_ip

我们会得到如图:

注意:上次有朋友提到上面这个地址证书失效了,那么我们就用上面那个接口

https://pv.sohu.com/cityjson?ie=utf-8

然后,我们可以得到数据

var returnCitySN = {"cip": "183.15.18.58", "cid": "440300", "cname": "广东省深圳市"};

接下来就是重点了,怎么取到ip地址呢?

小程序我们data就是这个数据,我们取的话肯定不能returnCitySN[cip],所以我们需要先转换为数组然后去除某些符号(不懂的,请去看博主的另一篇博客https://www.cnblogs.com/hejun26/p/10406740.html

wx.request({
url: 'https://pv.sohu.com/cityjson?ie=utf-8',
success: function (e) {
console.log(e.data);
var aaa = e.data.split(' ');
console.log(aaa)
var bbb=aaa[4]
console.log(bbb)
var ccc = bbb.replace('"','')
console.log(ccc)
var ddd = ccc.replace('"', '')
console.log(ddd)
var eee = ddd.replace(',', '')
console.log(eee)
that.setData({
IP: eee
})
},
fail:function(){
console.log("失败了");
}
})

打印出来就是:

好,大功完成!

然后js代码如下:(此处为失效地址的写法,如果知道该怎么写,请忽视这里)

//获取用户IP地址
data:{
IP:""
}
onshow:function(){
console.log("进来获取ip地址");
var that = this;
wx.request({
url: 'https://fangyuanxiaozhan.com/get_ip',
success: function (e) {
console.log(e.data);
that.setData({
IP: e.data.ip
})
},
fail:function(){
console.log("失败了");
}
})
},

希望对你有帮助,谢谢!

JavaScript和微信小程序获取IP地址的方法的更多相关文章

  1. 微信小程序开发-IP地址查询-例子

    微信小程序开发  小程序搜索框  IP地址查询  搜索查询  样例 微信小程序 开发 参考   https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...

  2. 微信小程序获取当前地址以及选择地址详解 地点标记

    首先定义事件: bindtap='getLocation' <view class='store-bot' bindtap='getLocation'> <view class='c ...

  3. 微信小程序-获取经纬度

    微信小程序-获取经纬度 最近公司新功能 要求在外的市场人员 发送位置信息回来. 用的还是微信小程序开发.... 微信小程序 提供一个接口 getLocation 这个接口反回来的位置 相对实际位置 相 ...

  4. [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息

    因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...

  5. C# 微信小程序获取openid sessionkey

    项目介绍 1.微信小程序获取openid和session_key 2.后台使用C#开发 项目流程 准备工作 1 获取appid 1.1 下载微信web开发工具 https://developers.w ...

  6. 微信小程序获取地理位置

    小程序只支持获取当前位置的经纬度,并不能直接获取到地理名称,需要通过第三方来逆地址解析,这里我选择的是腾讯位置服务 在使用前需要去申请key,这里是地址:https://lbs.qq.com/cons ...

  7. .Net之微信小程序获取用户UnionID

    前言: 在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理).这段时间就有一个这样的需求,之前有个客户做了一个微信小程序 ...

  8. 微信小程序-获取当前位置和城市名

    微信小程序-获取当前城市位置 1, 获取当前地理位置,首先要拿到用户的授权wx.openSetting: 2,微信的getLocation接口,获取当前用户的地理位置(微信返回的是经纬度,速度等参数) ...

  9. 微信小程序-获取当前城市位置及再次授权地理位置

    微信小程序-获取当前城市位置 1. 获取当前地理位置,可通过wx.getLocation接口,返回经纬度.速度等信息; 注意---它的默认工作机制: 首次进入页面,调用该api,返回用户授权结果,并保 ...

随机推荐

  1. ADO.NET操作PostgreSQL:数据库操作类(未封装)

    1.添加 /// <summary> /// 添加 /// </summary> /// <param name="newEntity">< ...

  2. 微信小程序web-view之wx.miniProgram.redirectTo

    17年微信小程序官方提供了web-view组件. 官方描述:web-view组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面.个人类型与海外类型的小程序暂不支持使用. 这段时间研究了一下小程 ...

  3. 记开发个人图书收藏清单小程序开发(六)Web开发

    Web页面开发暂时是没有问题了,现在开始接上Ptager.BL的DB部分. 首先需要初始化用户和书房信息.因为还没有给其他多余的设计,所以暂时只有个人昵称和书房名称. 添加 Init Razor Pa ...

  4. ASP.NET MVC学习目录

    一.ASP.NET MVC原理详解 1.了解MVC架构模式 3.学习ASP.NET MVC的必备语言知识 4.MVC中的razor语法详解 5.ASP.NET MVC路由系统机制详细讲解 6.ASP. ...

  5. poj做的题

    1699 1080 1170 1239(不错) 1659(读读怎么写)

  6. css3旋转动画

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Prufer codes与Generalized Cayley's Formula学习笔记

    \(Prufer\)序列 在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列 1.若当前树中只剩下两个节点,退出,否则执行\(2\) 2.令\(u\ ...

  8. Using RDP to connect Windows remote desktop with Linux

    安装rdesktop(一般情况下不需要这么做): sudo apt-get install rdesktop 执行连接: rdesktop xxx.xxx.xxx.xxx:3389 -u admini ...

  9. spring管理hibernate session的问题探究

    我们再用spring管理hibernate的时候, 我们会继承HibernateDaoSupport 或者HibernateTemplate类. 我们不知道这两个类之间有什么关系. 也没有去关闭ses ...

  10. [Objective-C语言教程]日志处理(21)

    为了打印日志,可使用Objective-C编程语言中的NSLog方法,首先在HelloWorld示例中使用了这个方法. 下面来看一下打印“Hello World”字样的简单代码 - #import & ...