精华内容
下载资源
问答
  • 魅族手机用户注册表单验证页面模板基于jquery-1.9.1.min.js制作,用户注册页面分为手机号码注册和帐户名注册两种方式,用户注册表单带验证功能。
  • HTML手机用户注册登录页面模板,手机WAP注册登录模板,有注册、登录模板
  • ##根据号码查询是否在此网站上注册过 #新浪验证 #!/usr/bin/env python # -*- coding:utf-8 -*- from urllib import parse import requests from urllib3 import request header_dict = { 'Accept': '*/*', '...

    ##根据号码查询是否在此网站上注册过

    #新浪验证

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    from urllib import parse
    import requests
    from urllib3 import request
    
    header_dict = {
        'Accept': '*/*',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
        'Connection': 'keep-alive',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Cookie': 'cookies啦啦啦',
        'Host': 'login.sina.com.cn',
        'Origin': 'https://login.sina.com.cn',
        'Referer': 'https://login.sina.com.cn/signup/signup?entry=homepage',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest',
    }
    url = 'https://login.sina.com.cn/signup/check_user.php'
    
    textmod = {
        'name': '',
        'format': 'json',
        'from': 'mobile'}
    
    numbers = ['123456789',]
    for n in numbers:
        textmod = {
            'name': n,
            'format': 'json',
            'from': 'mobile'}
        textmod = parse.urlencode(textmod)
        response = requests.post(url=url, data=textmod, headers=header_dict)
        status = response.status_code
        r = response.content.decode()
        if r == '{"retcode":100000}':
            print(str(n) + ':新浪未注册用户')
        else:
            print(str(n) + ':新浪已注册用户')
    
    

    #百度验证

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    from selenium import webdriver
    import time
    
    numbers = ['123456789',]
    
    driver = webdriver.Chrome()
    driver.get(
        "https://passport.baidu.com/v2/?reg&tt=1542702073936&overseas=undefined&gid=C7BD8C5-07A6-42B1-B5ED-1A03501EE953&tpl=mn&u=https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3Dselenium%2520browser%2520switch%26rsv_spt%3D1%26rsv_iqid%3D0xb0be0d1500035d17%26issp%3D1%26f%3D3%26rsv_bp%3D1%26rsv_idx%3D2%26ie%3Dutf-8%26rqlang%3Dcn%26tn%3Dbaiduhome_pg%26rsv_enter%3D1%26inputT%3D9601%26rsv_t%3D8573l6v0EM72JdhLYWt4DnBqqXDC2XR6oDbFsnby7fB2A0k6R5XJiFkytHY9SMpjYuTf%26oq%3Dselenium%252520script%252520%2525E8%2525AF%2525B7%2525E6%2525B1%252582%26rsv_pq%3Dff50eb2d0004bc73%26sug%3Dselenium%252520browser%26rsv_sug3%3D75%26rsv_sug1%3D44%26rsv_sug7%3D100%26rsv_n%3D1%26rsv_sug2%3D0%26prefixsug%3Dselenium%252520browser%252520switch%26rsp%3D0%26rsv_sug4%3D181554")
    login_windows = driver.current_window_handle
    try:
        time.sleep(3)
        for i in numbers:
            driver.refresh()
            phone = driver.find_element_by_xpath("//input[@id='TANGRAM__PSP_3__phone']")
            pwd = driver.find_element_by_xpath('//input[@id="TANGRAM__PSP_3__password"]')
            phone.click()
            time.sleep(1)
            phone.send_keys(i)
            time.sleep(1)
            pwd.click()
            time.sleep(1)
            flag = False
            try:
                driver.find_element_by_xpath('//div[contains(text(), "该手机已注册,可以通过密码或短信快捷登录。")]')
                flag = True
            except:
                flag = False
            if flag:
                print(str(i)+'号码已注册百度账号')
                driver.find_element_by_xpath('//div[@class="tang-pass-pop-confirmWidget"]//a[@class="close-btn" and position()=last()]').click()
            else:
                print(str(i)+'号码未注册百度账号')
            phone.clear()
    finally:
        print("something wrong!")
    

     

    展开全文
  • 用户注册手机注册

    2018-08-15 09:06:59
    手机注册 服务商 阿里云短信 腾讯云短信 百度云SMS 容联云通讯 接入步骤 注册开发者账号 创建应用 对接测试 上线运营 接入步骤图 以下为容联云通讯的写法 注册开发者账号 注册即可免费开发...

    手机注册

    • 服务商
      • 阿里云短信
      • 腾讯云短信
      • 百度云SMS
      • 容联云通讯
    • 接入步骤
      1. 注册开发者账号
      2. 创建应用
      3. 对接测试
      4. 上线运营
    • 接入步骤图

    以下为容联云通讯的写法

    注册开发者账号

    • 注册即可免费开发测试,无需认证充值,但无法上线
      • http://www.yuntongxun.com/user/reg/init
    • 短信验证码模板
      • 免费开发模板ID为1
      • 形式为
        • “【云通讯】您使用的是云通讯短信模块,您的验证码是{1},请于{2}分钟内正确输入。”
        • 其中{1}和{2}为短信模板的参数
    • 新增模板需认证、充值

    创建应用

    • 注册完成系统即创建默认应用

     

    • 绑定测试号码(仅免费开发测试)
      • 控制台-管理-号码管理-测试号码

    接口对接

    • SDK、DEMO下载
      • http://www.yuntongxun.com/doc/rest/sms/322_3.html
      • http://www.yuntongxun.com/doc/images/CCPRESTSMSDEMOJAVA_v2.6r.zip
    • 目录

    • 发送模板短信接口
      • 接口声明文件sdk\src\com\cloopen\rest\sdk\CCPRestSDK.java
      • 接口函数定义

    public HashMap sendTemplateSMS(String to, String templateId, String[] datas)

    • 参数释义

    参数名称

    数据类型

    说明

    to

    字符串

    短信接收手机号码集合,用英文逗号分开,如 "13810001000, 最多一次发送200个

    templateId

    字符串

    模板Id,如使用测试模板,模板id为"1"。如使用自己创建的模板,则使用自己创建的短信模板id

    datas

    字符串数组

    内容数据,需定义成数组方式,如模板中有两个参数,定义方式为String{"3456","测试"}

    上线运营

    • 完成个人或企业认证后应用即可自动上线,无需修改程序代码
    • 提交认证
      • 进入控制台-账号-账号信息-认证信息,按照页面提示操作即可
    • 流程图

    详细步骤

    • 发送短信验证码
      1. dao已完成
      2. service:创建用户,生成验证码(1111-9999),发送验证码,缓存验证码到redis
      3. controller:调用service的方法
    • 验证短信验证码
      1. dao已完成
      2. service:比对验证码,更新用户状态
      3. controller:调用service的方法
    • userService中添加方法

    void itriptxCreateByPhone(ItripUser user) throws Exception;
    • 实现itriptxCreateByPhone方法,用户注册成功信息,存进数据库为未激活状态,激活码通过smsService.send方法调用三方接口发送,并且存进Redis中

    @Override
    public void itriptxCreateByPhone(ItripUser user) throws Exception {
        // 添加用户信息
        itripUserMapper.insertItripUser(user);
        // 生成激活码
        String code = String.valueOf(MD5.getRandomCode());
        // 发送短信验证码
        smsService.send(user.getUserCode(), "1", new String[]{code, "2"});
        // 短信验证码存入redis
        redisAPI.set("activation:" + user.getUserCode(), code, 30 * 60);
    }
    • 编写smsService

    void send(String to, String templateId, String[] datas) throws Exception;
    • 实现send方法,对接三方接口,发送激活码

    
        @Override
        public void send(String to, String templateId, String[] datas) throws Exception {
            // 初始化sdk
            CCPRestSmsSDK sdk = new CCPRestSmsSDK();
            // 调用初始化方法
            sdk.init("app.cloopen.com", "8883");
            // 设置账户信息
            sdk.setAccount("自己的ACCOUNT SID", "自己的AUTH TOKEN");
            // 设置appid
            sdk.setAppId("自己的AppID");
            // 发送短信
            HashMap<String, Object> result = sdk.sendTemplateSMS(to, templateId, datas);
             //000000位发送成功
            if ("000000".equals(result.get("statusCode"))) {
                //正常返回输出data包体信息(map)
                HashMap<String, Object> data = (HashMap<String, Object>) result.get("data");
                Set<String> keySet = data.keySet();
                for (String key : keySet) {
                    Object object = data.get(key);
                    System.out.println(key + " = " + object);
                }
            } else {
                //异常返回输出错误码和错误信息
                System.out.println("错误码=" + result.get("statusCode") + " 错误信息= " + result.get("statusMsg"));
            }
        }
    }
    • 编写activateByPhone方法

    boolean activateByPhone(String phone, String code) throws Exception;
    • 实现activateByPhone方法,判断用户跟激活码是否正确,正确则修改数据库中用户的状态

    @Override
    public boolean activateByPhone(String phone, String code) throws Exception {
        String key = "activation:" + phone;
        if (redisAPI.exists(key))
            if (redisAPI.get(key).equals(code)) {
                ItripUser user = this.findByUsername(phone);
                if (EmptyUtils.isNotEmpty(user)) {
                    user.setActivated(1);//激活用户
                    user.setUserType(0);//自注册用户
                    user.setFlatID(user.getId());
                    itripUserMapper.updateItripUser(user);
                    return true;
                }
            }
        return false;
    }
    • 编写controller

    • 先用户注册是否合法以及是否存在,在调用service层存入数据库以及发送激活码

    @RequestMapping(value = "/registerByPhone", method = RequestMethod.POST, produces = "application/json")
    public @ResponseBody
        Dto registerByPhone(@RequestBody ItripUserVO userVO) {
        if (!validPhone(userVO.getUserCode()))
            return DtoUtil.returnFail("请使用正确的手机号", ErrorCode.AUTH_ILLEGAL_USERCODE);
        try {
            ItripUser user = new ItripUser();
            user.setUserCode(userVO.getUserCode());
            if (null == userService.findByUsername(user.getUserCode())) {
                user.setUserName(userVO.getUserName());
                user.setUserType(0);
                user.setUserPassword(MD5.getMd5(user.getUserPassword(), 32));
                userService.itriptxCreateByPhone(user);
                return DtoUtil.returnSuccess();
            } else {
                return DtoUtil.returnFail("用户已存在,注册失败", ErrorCode.AUTH_USER_ALREADY_EXISTS);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return DtoUtil.returnFail(e.getMessage(), ErrorCode.AUTH_UNKNOWN);
        }
    }

    调用service层判断激活码,不管成功与否,并且把结果返回给用户

    @RequestMapping(value = "/activateByPhone", method = RequestMethod.PUT, produces = "application/json")
    @ResponseBody
    public Dto activateByPhone(@RequestParam String phone, @RequestParam String code) {
        try {
            if (userService.activateByPhone(phone, code)) {
                return DtoUtil.returnSuccess("激活成功");
            } else {
                return DtoUtil.returnSuccess("激活失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return DtoUtil.returnFail("激活失败", ErrorCode.AUTH_ACTIVATE_FAILED);
        }
    }


     

    总结

    • JavaMail为企业级应用中的邮件服务提供了完整的解决方案
    • Spring对JavaMail提供了高级的抽象,提供了两个核心接口MailMessage和MailSender
    • 接入第三方手机短信服务
    • 注册开发者账号
    • 创建应用
    • 对接测试(SDK的使用)
    • 上线运营
    展开全文
  • 注册流程图 1. 校验手机号是否合法 public boolean verifyPhone(String phone) { Pattern pattern = Pattern.compile("^[1]\\d{10}$"); // 正则:手机号(简单), 1字头+10位数字即可. return pattern....

    注册流程图

    1. 校验手机号是否合法 

    public boolean verifyPhone(String phone) {
        Pattern pattern = Pattern.compile("^[1]\\d{10}$"); // 正则:手机号(简单), 1字头+10位数字即可.
        return pattern.matcher(phone).matches();
    }

    2. 判断数据库是否存在该手机号

    <select id="selectUserByPhone" resultType="java.lang.Integer">
        SELECT count(*) FROM user WHERE phone = #{phone};
    </select>

    结果不是0,则表示存在与手机号相关的记录。

    3. 向数据库插入新手机号

    <insert id="insertUserByPhone" parameterType="User">
        INSERT INTO user
        (phone)
        VALUES
        (#{phone});
    </insert>

     

    展开全文
  • 一般现在平台的用户注册时都是使用手机注册,所以就需要用到手机介绍短信验证码实现注册,在这里我调用的是榛子云短信平台第三方提供的短信服务发送验证码。 短信验证码实现流程 1、构造手机验证码,生成一个6位...

    一般现在平台的用户在注册时都是使用手机号注册,所以就需要用到手机介绍短信验证码实现注册,在这里我调用的是榛子云短信平台第三方提供的短信服务发送验证码。
    短信验证码实现流程
    1、构造手机验证码,生成一个6位的随机数字串;
    2、使用接口向短信平台发送手机号和验证码,然后短信平台再把验证码发送到制定手机号上
    3、将手机号验证码、操作时间存入map中,作为后面验证使用;
    4、接收用户填写的验证码、手机号及其他注册数据;
    5、对比提交的验证码与map中的验证码是否一致,同时判断提交动作是否在有效期内;
    6、验证码正确且在有效期内,请求通过,处理相应的业务。
    前端jsp

    <div class="register-content">
        <h1><span>用户注册</span><em class="fr">已有账户,<a href="${ctx}/login">立即登录</a></em></h1>
        <div class="register-div">
            <form action="login.html" id="registForm" method="post">
             <label for=""><i>*</i>手机号(登录账号):</label>
                <input type="text" class="register-div-tel" id="phone" name="mobile">
               
                <button type="button" class="send-code" onclick="settime(this)">发送验证码</button>
                <br>
                <label for=""><i>*</i>填写验证码:</label>
                <input type="text" id="verificationCode" name="verificationCode">
                <br>
                <label for=""><i>*</i>设置登录密码:</label>
                <input autocomplete="new-password" type="password" id="newPassword" name="password">
                <br>
                <label for=""><i>*</i>重复登录密码:</label>
                <input autocomplete="new-password" type="password" id="againPassword" name="againPassword">
                <br>
                <label for="">填写QQ号:</label>
                <input type="text" id="qqNumber" name="qqNumber">
                <br>
                <label for=""><i>*</i>昵称:</label>
                <input type="text" id="nickname" name="nickname">
               <!--  <span><i>&#10005;</i>请填写信息</span> -->
                <p>昵称长度3-15位,支持汉字、数字、字母、下划线.组合。</p> 
                <br>
                <label for="">邀请码:</label>
                <input type="text" id="inviteUserCode" name="inviteUserCode">
                <p>没有邀请码可不填写</p>
                <br>
               <!--  <label for="">来源:</label>
                <select name="" id="">
                    <option value=""></option>
                </select> -->
                <div class="read-notice">
                    <input type="checkbox" id="checkbox" checked="checked" onclick="terms()">
                    <em>我已仔细阅读并同意接受<a onclick="window.open('${ctxStaticMc}/htmls/merchantProtocol.html')" style="cursor:pointer;">《用户使用协议》</a></em>
                </div>
                <button type="button" class="register-submit" id="btn_reg" onclick="regist()">提交</button>
            </form>
        </div>
    </div>
    

    前端ajax请求

    	 $.ajax({
    		 url : "${ctx}/sendPhoneSms",
    		 cache : false,
    		 dataType : "json",
    		 data : {
    			 "mobile" : $("#phone").val(),
    			 "type" : "1"
    	     },
    		 type : 'POST',
    			  success : function(successData){
    				 
    				  if (successData.code == 0) {
    						layer.msg(successData.msg,{icon: 1});
    						 countdown--;
    						 settime(val)
    					} else {
    						layer.msg(successData.msg,{icon: 2});
                          val.removeAttribute("disabled");
                          countdown=60;
    					}
    			  },
    	 });
    

    后端代码

    @AccessLimit(maxCount=10)//一个ip下面,1分钟最多发送10次验证码。
        @RequestMapping(value ="sendPhoneSms",method = RequestMethod.POST)
        @ResponseBody
        public RestResponse sendPhoneSms(String mobile,String type) {
        	RestResponse restResponse = new RestResponse();
            try {
    	    	//String phone=RequestUtil.getString("phone",request);
    	    	//Assert.hasText(phone,"手机号不能为空");
    	    	Assert.isTrue(mobile != null && mobile.length() == 11, "手机号不规范");
    	    	//String type= RequestUtil.getString("type",request);
    	    	Assert.hasText(type,"type不能为空,1为注册,2为重置或修改类型");//type :1 注册, 2 重置或修改 类型。 
    	    	Assert.isTrue("1".equals(type),"");
    	    	BusinessUser  businessUserDb = businessUserService.findOneByLoginName(mobile);
    	    	Assert.isTrue(businessUserDb==null , "系统中存在此手机号用户,请登录");
    	    	String res = SMSUtils.sendSms(mobile) +"";
    	    	if("0".equalsIgnoreCase(res)){
    				return new RestResponse("发送成功");
    			}else{
    				return new RestResponse(RestErrorCode.SEND_SMS_FAILED, "发送失败");
    			}
            } catch (Exception ex) {
    	    	restResponse=ExceptionUtil.dealException(ex);
    	    }
    	    return restResponse;
        }
    

    发送短信服务工具类smsutil

    package com.hb.internet.common.sms;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLEncoder;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.TimeUnit;
    
    import org.apache.log4j.Logger;
    import org.springframework.util.Assert;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.google.common.cache.CacheBuilder;
    import com.google.common.cache.CacheLoader;
    import com.google.common.cache.LoadingCache;
    import com.hb.internet.common.config.Global;
    import com.hb.internet.common.security.Digests;
    import com.hb.internet.common.utils.RandomUtils;
    import com.hb.internet.common.utils.StringUtils;
    import com.hb.internet.modules.oa.utils.OaNotifyUtils;
    import com.zhenzi.sms.ZhenziSmsClient;
    
    /**
    * 短信验证码发送工具。 使用说明:SMSUtils.sendSms(手机号) 发送短信。
    **/
    public class SMSUtils {
    	
    	static Logger logger = Logger.getLogger(SMSUtils.class);
    	static String result = null;
    	/***
    	 * 短信验证码map信息。
    	 */
    	public static	LoadingCache<String,String> smsCodeMapCahce=CacheBuilder
    	    .newBuilder()
    	    .expireAfterWrite(15, TimeUnit.MINUTES)//给定时间内没有被读/写访问,则回收。
    	    .build(new CacheLoader<String, String>(){
    	        @Override
    	        public String load(String key) throws Exception {        
    	            return "";
    	        }
    	    });
    	
    	public static final String SMS_SIGN = "【买家秀】";
    	
    	public static final String CONTENT = "您的验证码:%s,15分钟有效。";
    	
    	//短信接口异常代码信息。
    	public static Map<String,String> smsErrorMap = new HashMap<String,String>();
    	
    	public static void main(String[] args) {
    		System.out.println(SMSUtils.sendSms("18975893631"));
    	}
    	/***
    	 * 初始化发送短信错误。
    	 */
    	static{
    		smsErrorMap.put("0", "发送短信成功");
    		//smsErrorMap.put("1", "成功");
    		smsErrorMap.put("-1", "短信帐户非法");
    		smsErrorMap.put("-2", "短信帐户已禁用");
    		smsErrorMap.put("-3", "短信存量不足");
    		smsErrorMap.put("-4", "默认错误");
    		smsErrorMap.put("-5", "默认错误");
    		smsErrorMap.put("-6", "默认错误");
    	}
    	
    	/***
    	 * 按手机号发送 短信验证码。
    	 ***/
    	public static int sendSms(String mobile){
    		String verificationCode = RandomUtils.generateConfirmCode(6,0);
    		logger.info("mobile:"+mobile+",verificationCode:"+verificationCode);
    		String apiUrl="https://sms_developer.zhenzikj.com";		
    		String appId="104399";
    		String appSecret="cd6aaba6-e444-4465-9a76-1267aa9e6b10";
    		ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
    		Map<String, String> params = new HashMap<String, String>();
    		String content = String.format(CONTENT,verificationCode);
    		params.put("message", "买家秀"+content);
    		params.put("number", mobile);
    		try {
    			result = client.send(params);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		smsCodeMapCahce.put(mobile, verificationCode);//设置到Map内存中去
    		return sendValidateSms(content,SMS_SIGN,mobile);
    	}
    	
    	
    	/***
    	 * 校验 短信验证码。
    	 * @param mobile 手机号
    	 * @param verificationCode 验证码
    	 * @return
    	 * @throws ExecutionException 
    	 */
    	public static boolean verificationSmsCode(String mobile, String verificationCode) throws ExecutionException {
    		//#TODO 如果是测试环境。并且验证码为888888  则不需要验证,直接跳过短信验证码验证。
    		if(Global.isTestMode() && StringUtils.equalsIgnoreCase(verificationCode, "888888")){
    			return true;
    		}
    		Assert.hasText(verificationCode, "验证码不能为空");
    		Assert.hasText(mobile, "手机号不能为空");
    		if(StringUtils.equalsIgnoreCase(smsCodeMapCahce.get(mobile),verificationCode)){
    			//使用完毕后,让缓存中的验证码失效。
    			SMSUtils.smsCodeMapCahce.invalidate(mobile);
    			return true;
    		}else{
    			return false;	
    		}
    	}
    	
    	public static int sendValidateSms(String content,String smsSign,String mobile){
    		int code =-1;
    		try {
    			 JSONObject jsonObject = null;
    	         jsonObject = JSON.parseObject(result);
    
    	         if (jsonObject != null && jsonObject.containsKey("code") && jsonObject.getString("code") != null) {
    	        	 String codeStr  = jsonObject.getString("code");
    	        	 //1:成功
    	        	 //-1:短信帐户非法
    	        	 //-2  短信帐户已禁用
    	        	 //-3  短信存量不足
    	        	 //-4  未知错误
    	        	 if(StringUtils.isNumeric(codeStr)){
    	        		 code = Integer.parseInt(codeStr);
    	        	 }
    	           }
    		    } catch (Exception ex) {
    		    	logger.error(ex,ex);
    		    	code = -6;
    		    	//提交短信发送出现异常
    	            //return ("提交短信发送出现异常");
    	        }
    		if(code !=0){
    			//发送系统消息给到管理员。
    			String msg = "buyershow-api模块,发送短信接口出错,错误返回值:"+code+",错误信息:"+ SMSUtils.smsErrorMap.get(code+"");
    			OaNotifyUtils.sendNotifyToAdmin(msg, msg);
    		}
    		return code;
    	}
    	
    	private static String get(String url) {
    		BufferedReader in = null;
    		try {
    			URL realUrl = new URL(url);
    			// 打开和URL之间的连接
    			URLConnection connection = realUrl.openConnection();
    			// 设置通用的请求属性
    			connection.setRequestProperty("accept", "*/*");
    			connection.setRequestProperty("connection", "Keep-Alive");
    			connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    			connection.setConnectTimeout(5000);
    			connection.setReadTimeout(5000);
    			// 建立实际的连接
    			connection.connect();
    			// 定义 BufferedReader输入流来读取URL的响应
    			in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    			StringBuffer sb = new StringBuffer();
    			String line;
    			while ((line = in.readLine()) != null) {
    				sb.append(line);
    			}
    			return sb.toString();
    		} catch (Exception e) {
    			//LOG.error("Exception occur when send http get request!", e);
    		}
    		// 使用finally块来关闭输入流
    		finally {
    			try {
    				if (in != null) {
    					in.close();
    				}
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		return null;
    	}
    	
    	//发送短信,uid,pwd,参数值请向企信通申请, tel:发送的手机号, content:发送的内容
    	public static String send(String uid, String pwd, String tel, String content) throws IOException {
    		// 创建StringBuffer对象用来操作字符串
    		StringBuffer sb = new StringBuffer("http://api.cnsms.cn/?");
    		// 向StringBuffer追加用户名
    		sb.append("ac=send&uid="+uid);//在此申请企信通uid,并进行配置用户名
    		// 向StringBuffer追加密码(密码采用MD5 32位 小写)
    		sb.append("&encode=utf8");
    		// 向StringBuffer追加密码(密码采用MD5 32位 小写)
    		sb.append("&pwd="+Digests.string2MD5(pwd));//在此申请企信通uid,并进行配置密码
    		// 向StringBuffer追加手机号码
    		sb.append("&mobile="+tel);
    		// 向StringBuffer追加消息内容转URL标准码
    		sb.append("&content="+URLEncoder.encode(content,"utf8"));
    		// 创建url对象
    		URL url = new URL(sb.toString());
    		// 打开url连接
    		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    		// 设置url请求方式 ‘get’ 或者 ‘post’
    		connection.setRequestMethod("POST");
    		// 发送
    		BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    		// 返回发送结果
    		String inputline = in.readLine();
    		return inputline;
    	}
    
    }
    
    展开全文
  • 在做用户注册是忘记密码的时候需要手机验证.... 比如在项目中用手机号注册,然后会收到一个验证信息,正确就成功否则失败!有没有哪位大牛做过,求指导一下,如何做....最好可以有个demo和说下用的哪个运营商稳定些...
  • HTML5手机用户登录注册页面模板基于jquery.1.7.2.min.js制作,点击登录或注册,弹出登录或注册页面窗口,自适应屏幕分辨率大小,兼容PC端和手机移动端。
  • <div><p>方便主办方联系,也方便活动信息变更时可以通过短信通知 ...1. 修改注册页面,增加手机输入项,并进行必填校验 <h1>381</h1><p>该提问来源于开源项目:19wu/19wu</p></div>
  • 注册手机验证用户

    千次阅读 2016-01-17 15:00:26
    现在的软件注册都是用的手机号码,我们在学习的时候怎么使用手机验证了,我偶尔在网上看到了mob的免费验证码,说是免费,其实是要你的应用在上面上线后,开始的每天是发送20条验证码免费,我就试一试,首先我使用的android ...
  • 为什么用户注册时需要使用邮箱或手机号作为注册名?注册用户使用互联网的重要环节。 考点:需求分析 主要解题思路 每次注册app或者网站时候,都超麻烦,有的需要手机发送验证码,有的需要去邮箱激活,真的是挑战...
  • 文章目录Blog项目——用户注册八、 手机号校验1. 分析2. 测试 本文接上文 八、 手机号校验 1. 分析 请求方法:GET url定义:/mobiles/(?P<mobile>1[3-9]\d{9}) 请求参数:url路径参数 参数 类型 是否必传 ...
  • 叮~ 你的源码分享纯干货到了...用户手机注册源码分享,首页获取验证码,调用阿里大鱼短信验证码,接口thinkphp5.2写的,可以判断手机号是否注册,短信发送是否成功。 <!DOCTYPE html> <html> <he...
  • 用户注册前端post 过来的手机号,我们是当成用户名 username来处理的,那我们的用户表userprofile 里面的user_mobile不是一直都是空的?当然不是,我们可以将user_mobile初始化为这个手机号username 用户设置的时候...
  • 验证用户提交的手机短信验证码,如果验证码错误就跳回到当前页面。在短信验证码未填写或未正确填写时,就关闭底下注册按钮的功能,只有短信验证码通过校验后才打开注册按钮的功能。第二种方式是所有输入项全部填写...
  • 网站或者APP的新用户注册环节,基本上会用到用户手机号验证功能,该功能是否安全、稳定会直接影响新注册用户的转化率。 企业使用新用户注册功能,通常会遇到以下两方面的问题: 一、duan一、短信接口被刷 1、...
  • 目录 1搭建项目开发环境 1.1安装redis 1.1.1下载redis 1.1.2安装redis 1.1.3设置redis为windows服务 安装为windows服务 1.2启动idea 1.3增加redis配置服务类 1.3.1增加接口类 ...3.1用户手机注...
  • 如今网络上的电影网站不少,但很多都是需收费的,根本无法观看到收费电影的,使用手机注册用户却不同,因为它的身份被网站视为高级用户,将其Cookies信息伪造成手机注册的高级用户,来免费观看到网站所提供的收费...
  • 基于微服务的用户注册时的手机短信验证码,这里将短信验证码的第三方接口(阿里云提供)封装成一个工具类 截图: 示例 1.工程结构: 2.crowd-common子模块中: (1).RedisProviderService.java: import ...
  • 为了贯彻落实国家互联网信息办公室对互联网用户账号名称的相关规定,即日起要求所有CSDN用户进行手机短信验证。为了您的账号能正常使用,请您进行手机短信验证,每个手机号只能绑定和验证一个CSDN账号(后续会开放一...
  • 针对上一篇比较简单的注册内容,只要求用户输入用户名和密码,根据现在的网站需求,我们常常需要用户填写手机号或收货地址之类的信息。这里以注册页面加入手机号为例,有些代码如果觉得不好理解可以先看一下上一篇...
  • 在上一篇文章我们实现了用户注册中的图形验证码过程,接下来我们要实现用户名验证,密码验证,以及手机号验证. 实现注册要完成的图表 实现注册模块的整体流程 根据流程图总结注册业务包含如下功能 注册页面 图片...
  • 近日,据媒体报道,大量印度用户反应,使用微信时会被强制退出,而且无法再登陆。在账号被登出时,用户收到一条来自微信团队的信息,写道:“根据印度法律,我们目前不能为您提供微信服务。我们重视每...
  • 第六课 Flask用户注册数据加密手机邮箱激活和内置对象 tags: Flask 2019千锋教育 categories: flask 钩子函数 内置对象q和Config 用户注册数据加密 邮箱发送 手机激活 文章目录第六课 Flask用户注册数据加密手机...
  •  后台 需要完成功能 用户手机号码注册  1.当用户输入手机号 ,点击获取 短信验证码 ,我后台生成的 发给第三方的验证码(我把它放在了session里面了) ,然后第三方发给注册用户。(PS:算作一个请求相应,...
  • 用户注册

    2020-11-30 21:39:10
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YEyg1UiC-1606743493377)(用户注册开发流程.png)] 要求 对用户名进行校验 对密码进行确认 对手机好进行校验 验证码,可点击切换 注册成功...
  • 一个简单的android小项目,实现用户的登录注册,通过service 实时访问服务器端,当有新用户注册时 提示用户 有新的用户注册
  • 2.个人用户注册的公众号不能跳转网页,企业级的可以用企业资质注册服务号或者订阅号,可以添加菜单,跳转网页或小程序。可以是登录页面,购物页面,官网等等。 3.需求分析(以电动车寻找充电桩充...
  • 手机注册

    2020-04-15 14:52:38
    正常情况下是用户注册的时候,给他填写的手机发送一串数字随机码,用户注册提交的时候,如果填写的数字随机码和系统下发的随机码一致,则表示该手机在被使用,可以注册。但是该如歌实现呢? 首先,需要用到第三方...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,853
精华内容 2,341
关键字:

手机用户注册