最近公司新加了一个需求,根据用户登录的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. .NetCore分布式部署中的DataProtection密钥安全性

    在.NetCore中默认使用DataProtection来保护数据,例如Cooike等.一般情况下DataProtection生成的密钥会被加密后存储,例如默认的文件存储 可以看到使用了Windows ...

  2. TortoiseGit revert failed - unable to revert local changes

    TortoiseGit revert failed - unable to revert local changes 下载完按照提示一步一步安装就可以了 成功之后就是windows.1版本,如图

  3. Jmeter非GUI运行,生成html报告

    一.JMete执行方式 JMeter执行方式有2种,一种是GUI模式,一种是非GUI模式.GUI模式就是界面模式,非GUI模式就是命令行模式.界面模式主要用来编写和调试脚本用的,项目的真正执行最好是采 ...

  4. 反弹Shell小结

    1.NC反弹shell 1.1.正向反弹shell 服务器 nc -lvvp 7777 -e /bin/bash 攻击机 nc  server-ip 7777 1.2.反向反弹shell 攻击机 nc ...

  5. 【2】JMicro微服务-Hello World

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 1. 首先完成 JMicro微服务-RPC体验 的1到5步. 按默认方式启动ZK及Redis: JDK需要Java8及以上. ...

  6. leetcode-840-Magic Squares In Grid

    题目描述: A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each r ...

  7. 【Quartz】一个小Demo

    Quartz是一个优秀的框架,功能强大,用法简单,比如说下面这个例子. (1)引入Jar包 <!-- quartz 模块 --> <dependency> <groupI ...

  8. python学习,day3:函数式编程,带参数

    # coding=utf-8 # Author: RyAn Bi def test(x,y,z): print(x) print(y) print(z) test(y=2,z =3,x=1) #形参与 ...

  9. 为什么要重写hashcode方法和equals方法

    我们可能经常听到说重写equals方法必须重写hashcode方法,这是为什么呢?java中所有的类都是Object的子类,直接上object源码 /* * Copyright (c) 1994, 2 ...

  10. HDU - tag :: Multi-University 大合集

    说明:按无序更新,只更(会)水题 4632 题意:求字符串的回文子[序列]个数 区间DP,设\(dp[i][j]\)为\([i,j]\)范围内的回文子序列个数, 由容斥定理可得\(dp[i][j]=d ...