手机号注册获取随机验证码

短信验证码接口使用的是阿里云上的短信平台API,上面有很多免费的,可以拿来测试使用
本人写的稍显简单,有不足之处敬请谅解
前台jsp

<script type="text/javascript">
 function sendMsg() {
	var phone = $("#phone").val();//获取输入的手机号
	var code = $("#code").val();//获取输入的验证码
	$.ajax({  		
		type:"post",
		data:{
			phone:phone,
			code:code
		},
		url:"${pageContext.request.contextPath }/list",  //使用的是绝对路径			
		success:function(data) {
			$("#mcode").val(data)
		} 		
	});
   }
 //验证码判断,登录进主页面
  function login() {
	var code = $("#code").val();
	var mcode = $("#mcode").val();
	
	if(code == mcode)
		window.location.href="${pageContext.request.contextPath }/trun"
	else {
		alert("验证码输入错误")
	}	
   }
 </script>

后台,大部分代码是从API复制,获取你输入的手机号,略作修改就可以了

public class SendMessage {	
@RequestMapping("/list")
@ResponseBody
public String login(@RequestParam("phone") String phone,@RequestParam("code") String code,HttpServletRequest req,HttpServletResponse resp) throws IOException {
	
	//生成6位随机验证码
	Random random = new Random();
	String result="";
	for (int i=0;i<6;i++)
	{
		result=result+random.nextInt(10);
	}		

    String host = "https://feginesms.market.alicloudapi.com";
    String path = "/codeNotice";
    String method = "GET";
    String appcode = "你自己的appcode";
    Map<String, String> headers = new HashMap<String, String>();
    //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
    headers.put("Authorization", "APPCODE " + appcode);
    Map<String, String> querys = new HashMap<String, String>();
    querys.put("param", result);//生成的随机验证码
    querys.put("phone", phone);//输入的手机号
    querys.put("sign", "1");
    querys.put("skin", "1");
        //JDK 1.8示例代码请在这里下载:  http://code.fegine.com/Tools.zip

    try {
    	HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
    	//System.out.println(response.toString());如不输出json, 请打开这行代码,打印调试头部状态码。
            //状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误
    	//获取response的body
    	//System.out.println(EntityUtils.toString(response.getEntity()));
    } catch (Exception e) {
    	e.printStackTrace();
    }
    return result;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取手机验证码一般需要使用短信平台提供的 API 接口,通过调用接口来发送短信验证码到用户手机上。具体实现流程如下: 1. 选择一个短信平台,比如阿里云、腾讯云、云片等,注册获取 API 接口的 AppKey 和 AppSecret。 2. 在 Python 中使用 requests 库或者其他 HTTP 请求库,通过 API 接口发送短信验证码到用户手机上。 3. 用户收到短信验证码后,可以在客户端进行输入验证。 以下是一个使用阿里云短信平台发送短信验证码的 Python 代码示例: ```python import requests import json import hashlib import random import time # 阿里云短信平台的 API 地址和版本号 url = 'http://dysmsapi.aliyuncs.com/' version = '2017-05-25' # 阿里云短信平台的 AppKey 和 AppSecret access_key_id = 'your_access_key_id' access_key_secret = 'your_access_key_secret' # 发送短信验证码的函数 def send_sms_code(phone_number): # 生成随机的 6 位验证码 code = str(random.randint(100000, 999999)) # 构建请求参数 params = { 'Action': 'SendSms', 'Version': version, 'AccessKeyId': access_key_id, 'Timestamp': time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime()), 'Format': 'JSON', 'SignatureMethod': 'HMAC-SHA1', 'SignatureVersion': '1.0', 'SignatureNonce': str(random.randint(1000000000000000, 9999999999999999)), 'PhoneNumbers': phone_number, 'SignName': 'your_sign_name', 'TemplateCode': 'your_template_code', 'TemplateParam': json.dumps({'code': code}) } # 计算签名 sorted_params = sorted(params.items(), key=lambda x: x[0]) canonicalized_query_string = '&'.join(['%s=%s' % (k, v) for (k, v) in sorted_params]) string_to_sign = 'GET&%2F&' + requests.utils.quote(canonicalized_query_string, safe='') h = hashlib.sha1() h.update(access_key_secret.encode('utf-8') + b'&') h.update(string_to_sign.encode('utf-8')) signature = h.digest().hex() # 发送请求 params['Signature'] = signature response = requests.get(url, params=params) # 解析响应 result = json.loads(response.text) if result['Code'] == 'OK': return code else: return None ``` 其中,`access_key_id` 和 `access_key_secret` 是阿里云短信平台提供的 AppKey 和 AppSecret,`phone_number` 是要发送验证码手机号码,`your_sign_name` 是你在阿里云短信平台上申请的签名名称,`your_template_code` 是你在阿里云短信平台上申请的模板编号。该函数返回发送的验证码,如果发送失败则返回 None。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值