一个简单的短信注册Demo

项目开发过程中如何使用免费开发手机验证码验证功能(详细教程) 首先声明一下,这个Demo仅限用于开发项目中测试使用,如果需要上线项目,付费才能使用 这个测试在未付费的情况下,是只能有几个手机号能接受验证码,后面绑定接收验证码的手机号的时候我就再说明一下 这里使用的是一个叫容联云通讯的短信服务,这里并不是小编收了广告费或者什么别的好处才推荐的,而是因为小编找到的所有的手机验证码短信服务这些,只有这个网站能支持开发免费测试验证码 不说废话了,直接上教程了 第一步,注册一个容联云通讯的账号 注册账号我就不多说了,大家应该都会注册账号的 这里是网站链接 https://w. 阅读详情

**

用户登录任何软件都需要注册账号,有输入手机号发短信的,有获取手机权限获取手机号进行注册的,还有的扫码进行登陆然后关联手机号的,也有关联第三方的比如QQ,新浪微博,支付宝来登录的,无论哪种方式都是为了跟你手机绑定起来,避免一个手机号多个账号的情况

**

今天就随便写一下简单的注册登录代码,

注册的话,手机注册无非两个按钮,一个发送短信,一个注册

注册流程:
用户点击发送短信,后台收到前台传递过来的手机号,然后进行给该手机号发送短信,现在给手机号发送短信的第三方很多,比如阿里大于,科大讯飞,随便找个第三方即可,都是收费的,但是测试会有免费的几条,今天拿阿里大于做个例子

注册一个阿里账号,登录后申请秘钥,然后把SDK下载下来修改下,大概代码如下

先添加依赖,直接下载jar包也可以,基本公司都是用maven,直接引入依赖即可

<dependency>
		<groupId>com.aliyun</groupId>
		<artifactId>aliyun-java-sdk-core</artifactId>
		<version>4.1.0</version>
</dependency>

然后写发送短信的方法

/**
	 * 发送短信
	 * 
	 * @param phone
	 *            手机号
	 */
	public static String send(String phone, String rodom) {
		// 第二个参数为自己独有的accessKeyid,第三个参数为自己独有的accessKeySecret
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "AAAAA", "BBBBBB");
		IAcsClient client = new DefaultAcsClient(profile);
		CommonRequest request = new CommonRequest();// 组装请求对象
		// request.setProtocol(ProtocolType.HTTPS);
		request.setMethod(MethodType.POST);// 设置post提交
		request.setDomain("dysmsapi.aliyuncs.com");// 短信API产品域名(接口地址固定,无需修改)
		request.setVersion("2017-05-25");
		request.setAction("SendSms");
		request.putQueryParameter("RegionId", "cn-hangzhou");
		request.putQueryParameter("PhoneNumbers", phone);
		request.putQueryParameter("SignName", "就是短信方括号里面的那个名字");// 短信签名
		request.putQueryParameter("TemplateCode", "SMS_162731312");
		request.putQueryParameter("TemplateParam", "{code:" + rodom + "}");
		try {
			CommonResponse response = client.getCommonResponse(request);
			return response.getData();
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		}
		return null;
	}

然后写个生成6位随机数的方法

// 生成6位随机数
	public static String createRodom() {
		Random random = new Random();
		String result = "";
		for (int i = 0; i < 6; i++) {
			result += random.nextInt(10);
		}
		return result;
	}

后台接口两个应该够用了

/**
	 * 发送短信接口
	 * 
	 * @param request
	 * @param number
	 * @return
	 */
	@RequestMapping("/sendSms")
	@ResponseBody
	public ReturnT<String> sendSms(HttpServletRequest request, String number) {
		try {
			// 生成6位验证码
			String rodom = Sms.createRodom();
			// 发送短信
			// TODO
			// Sms.send(number, rodom);
			// 将认证码存入SESSION
			request.getSession().setAttribute("verifyCode", rodom);
			request.getSession().setAttribute("createTime", System.currentTimeMillis());
			return ReturnT.SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
/**
	 * 验证验证码是否正确
	 * 
	 * @param request
	 * @param verifyCode
	 * @return
	 */
	@RequestMapping("/cheakSms")
	@ResponseBody
	public ReturnT<String> cheakSms(HttpServletRequest request, String phone, String password, String verifyCode) {
		String code = (String) request.getSession().getAttribute("verifyCode");
		long time = (long) request.getSession().getAttribute("createTime");
		// 验证码不为空时,到后台进行比较,返回响应码,
		// 为0,提示成功
		// 为1,提示请先获得验证码
		// 为2,提示验证码错误
		// 为3,验证码超时
		// 为4,该手机号已注册
		if (verifyCode == null) {
			return new ReturnT<String>(1, "请先获得验证码");
		} else if (verifyCode.equals(code)) {
			SysUser user = new SysUser();
			user.setLoginName(phone);
			ReturnT<SysUser> returnT = sysUserService.selectSysUser(user);
			if (returnT == null && "".equals(returnT)) {
				if (System.currentTimeMillis() - time > 600000) {
					return new ReturnT<String>(3, "验证码超时");
				} else {
					// 注册成功,存储用户中心,salt默认为123456
					String hex = DigestUtils.md5Hex(phone + password + "123456");
					SysUser sysUser = new SysUser();
					sysUser.setLoginName(phone);
					sysUser.setPassword(hex);
					sysUser.setSalt("123456");
					sysUserService.save(sysUser);
					return new ReturnT<String>(0, "注册成功");
				}
			} else {
				return new ReturnT<String>(2, "验证码错误");
			}

		} else {
			return new ReturnT<String>(4, "该手机号已注册");
		}

	}

注册一个放短信接口,一个检验前台输入的短信验证码,无非就几种情况,一一进行判断下就好了,要么验证码为空,要么不正确,要么已注册,要么已经超时,代码就这么多

接下来开始测试吧,由于短信发完了就手动看验证码

IOS 实例一 登录注册界面搭建 创建两个类,一个RegisterViewController为注册类,ViewController为登录界面类,往项目中添加两张图片,用于用户名和密码右边的图片(如果不需要显示右边的图片也可以不要); 在ViewController.m文件中,先来编写登录界面的代码,这里将用户名输入框和密码输入框声明成员变量,方便其他函数中使用这些对象,代码如下: @interface ViewController 阅读详情

相关推荐

微信小程序demo测试实践

https://mp.weixin.qq.com/cgi-bin/wx:平台地址 建议先了解他的各个文档, github.com/wechat-miniprogram/miniprogram-demo demo下载地址 https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 开发者工具地址 开发版:...

qq_38338941的博客 3274

【手机类练习】习题:Phone.java和PhoneDemo.java

你好

neevek4111的博客 2294

易语言对接验证码短信接口DEMO示例

发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 .版本 2 .支持库 iconv .支持库 EXMLParser .程序集 窗口程序集_启动窗口 .子程序 __启.

Zhangmy227的博客 773

第一大题、分析(共14小题,满分100分)

1 、(9分) 设计一个专门用于处理实际项目中提供的数据格式不正确问题的编译异常类型(checkedException),要求在使用输入的内容时,必须对数据进行检查,如果数据不正确,利用异常处理机制进行消息传递。假设某个实际应用在一个类型定义中有一个成员方法需要接收文件名为java源文件,请你写出对于文件名进行判定的一段代码。你需要完成的设计如下: (1)实际应用需要对提供的Java源文件进行编译和运行,请你设计一个命名为NOtJavaFileException的类型,异常消息内容为"非Java源文件";

没事发发博客 3138

PHP对接验证码短信接口DEMO示例

发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 //开启SESSION session_start(); header("Content-type:text/html; cha

Zhangmy227的博客 354

C++对接验证码短信接口DEMO示例

学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 ------------------------------------------------------------------------------------------------------------------------- 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APII

Zhangmy227的博客 691

JAVA对接验证码短信接口DEMO示例

学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 import java.io.IOException; import org.apache.common.

Zhangmy227的博客 371

JSP短信接口开发给手机发短信

学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 String postUrl = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; int mobile_code = (int)((Math.random()*9+1)*100000); //获取随机数 String account = "用户名"; //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID St

Zhangmy227的博客 328

DELPHI对接验证码短信接口DEMO示例

发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 // *************************************************************

Zhangmy227的博客 176

ASP怎么给手机发短信

学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY '注意事项: '(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 <%@LANGUAGE=..

Zhangmy227的博客 309

【原创,解决CLodop安装后无法调用的问题】已经安装过CLodop,但是网页上仍然提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装....”

在某些国内web网站中,需要安装一个名为“CLodop”的插件;但在实际使用过程中,即使安装了CLodop插件,网页试图调用它时还是会提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装...”,且无法完成相关打印任务 本文属原创博客,分析了解决CLodop无法被调用的问题,并附上了原理和解决方法,本质上是和跨域请求以及CORS类安全组策略相关

link_in_csdn的博客 2万+

GO对接验证码短信接口DEMO示例

学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 //账户注册:请通过该地址开通账户http://user.ihuyi.com/?JA9Ewr //注意事项: //(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 //(2)请使用 用户名 及 APIkey来调用接口,APIkey在会员中心可以获取; package main import ( "crypto/md5" "encoding/hex" "f...

Zhangmy227的博客 224

BACnet/IP BBMD跨网段通信深度解析与最佳实践

本文介绍了在BACnet/IP网络中通过BBMD实现跨子网设备通信的关键配置方法。重点阐述了广播分发表(BDT)中掩码设置的重要性:使用子网掩码(255.255.255.0)会导致路由器拦截广播消息,而必须采用主机掩码(255.255.255.255)才能启用单播隧道机制,使BACnet广播消息封装为可路由的单播UDP包。文章详细说明了BDT条目的正确配置格式、BIP广播地址的作用,并提供了验证步骤,强调在跨网段场景中,正确设置掩码是确保设备发现和通信成功的关键因素。

零一架构师的专栏 1536

易语言怎么给手机发短信,对接验证码短信接口DEMO示例

发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 .版本 2 .支持库 iconv .支持库 EXMLParser .程序集 窗口程序集_启动窗口 .子程序 __启动窗口

Zhangmy227的博客 1163

JetLinks社区版VS企业版:手把手教你用PostgreSQL+Redis搭建物联网中台(Win7实测)

本文详细对比了JetLinks社区版与企业版的核心差异,并提供了在Windows 7系统上,使用PostgreSQL和Redis搭建物联网中台的完整部署教程。文章深入解析了从环境准备、后端服务构建到前端部署的每一步,为开发者在资源有限环境下构建高性价比物联网平台提供了清晰的实战指南。

w1x2y3的博客 303

基于STM32的PID恒温恒湿控制系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6核心控制器,完整实现了基于双路PID算法的恒温恒湿闭环控制系统,覆盖高精度温湿度采集、双模式控制、参数在线配置、异常安全保护、掉电记忆等全功能,全程采用无跳步保姆式教学,从硬件选型、接线、CubeMX配置、代码开发、调试排坑全流程拆解,跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 345

JSP怎么给手机发短信对接验证码短信接口DEMO示例

发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 String postUrl = "http://106.ihuyi.com/webservice/sms.php?method

Zhangmy227的博客 253

vLLM显存逆向计算:如何得到最优gpu-memory-utilization参数

本文提出了一种**逆向工程**的思路:基于vLLM显存占用的底层机制,通过精确计算模型权重、KV缓存、激活内存等各组件的显存需求,**倒推出最优的gpu-memory-utilization参数**。这种方法让我们能够在部署前就准确预估资源需求,实现一次配置、稳定运行。本文我们将从vLLM显存计算的核心原理出发,构建完整的倒推计算框架和源码,并通过大量实验验证其准确性(会有误差,但基本可以直接使用)。

羊城迷鹿的博客 1947

JSP对接验证码短信接口DEMO示例

学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 String postUrl = "http://106.ihuyi.com/webservice/sm.

Zhangmy227的博客 239

simulink建模仿真实例1000例--第375例:基于Simulink进行复杂交通流的仿真建模

特点多车互动:模拟多个车辆之间的相互作用。动态变化:交通流量随时间和事件(如事故、天气变化)而变化。多样化驾驶行为:考虑不同的驾驶员行为模式(激进型、保守型等)。挑战准确性:准确地模拟各种因素对交通流的影响。实时性:处理大量车辆数据,并迅速做出反应。可扩展性:支持从简单场景到复杂城市交通网络的扩展。首先明确要模拟的任务内容。模拟不同类型的车辆(轿车、卡车、公交车等)。考虑不同驾驶员的行为模式。分析交通拥堵、事故对交通流的影响。

xiaoheshang_123的博客 201

基于YOLOv8的水果新鲜程度检测系统设计与实现

数据采集与预处理模块:负责收集水果图像数据并进行标注和增强深度学习模型:基于YOLOv8的目标检测模型新鲜度评估模块:根据检测结果评估水果新鲜程度用户界面:提供友好的交互界面系统集成:将各模块整合为完整系统水果新鲜程度检测需要包含多种水果在不同新鲜度状态下的图像数据集。:包含5种常见水果(苹果、香蕉、橙子、葡萄、草莓)在不同新鲜度下的图像包含约8,000张图像,分为新鲜和腐烂两类AgriVision:大型农业图像数据集,包含水果检测和分类任务Fruit-360:包含120种水果的高质量图像。

YOLO 444

GO怎么给手机发短信对接验证码短信接口DEMO示例

短信接口 发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APIID和APIKEY 注意事项: (1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。 package main import ( "crypto/md5" "enco...

Zhangmy227的博客 390

STM实战开发(13):STM32开发:使用光敏电阻检测光照强度

光敏电阻(LDR)是一种电阻值受光照强度影响的半导体材料。当光照强度增大时,光敏电阻的电阻值降低;而当光照强度减小时,电阻值则增大。光敏电阻的电阻变化与入射光的强度之间并不是线性关系,而是呈对数型的变化。LDR通常由硫化镉(CdS)或其他半导体材料构成,材料对不同波长的光有不同的响应特性。一般而言,光照强度越强,光敏电阻的电阻值越低,反之则越高。本文介绍了如何使用STM32与光敏电阻(LDR)结合,进行光照强度检测的实现方法。通过配置STM32的ADC模块,读取光敏电阻的电压信号,并根据电压计算光照强度。

2201_76125393的博客 3017

集成阿里大于

注册阿里云(淘宝号登陆) 阿里云产品中找短信服务 申请短信签名、申请短信模板(获取模板code) 查看accesskey的键值对 下载java的短信demo 解压后把libs文件夹下的两个jar包 aliyun-java-sdk-core-3.2.3.jar aliyun-java-sdk-dysmsapi-1.0.0-SNAPSHOT.jar 放到pom.xml文件中

爪爪小白 571

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: XXL-SSO单点登录___整合APP手机端+PC端
下一篇: Python爬虫脚本,利用find爬取普通网页(源码)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值