Ahora, no importa qué proyecto se utilice, si se utiliza la función de verificación SMS, un límite en la cantidad de veces que se diseña un código de verificación SMS en el programa, que evita que la interfaz del código de verificación SMS se cepille.
El párrafo anterior resultó ser la función de inicio de sesión de un código de verificación SMS de usuario para un proyecto, por lo que estudié lo siguiente y lo publiqué a continuación para compartirlo.
La interfaz SMS involucrada aquí utiliza la interfaz SMS de terceros - pensamiento dinámico de pensamiento (http://www.lx598.com/). Si desea saber sobre el acceso a la interfaz SMS, puede ir a su sitio web oficial y consultar la descripción de la documentación de la API de la interfaz SMS. Debe comprenderlo refiriéndose al código a continuación.
La parte de registro del usuario, el código principal es el siguiente:
// Método JS principal: // Obtener código de verificación móvil: function getRegCode () {if ($. Trim ($ ('#inputCaptcha'). Val ()) == '') {$ ('#imgrs'). Html ("El código de verificación gráfico no puede estar vacío"); $ ('#inputCaptcha'). SELECT (); devolver; } if (! IsPhonenum ($ ('#fonere'). val ())) {document.getElementById ('PhonereInfo'). Innerhtml = '<font color = "rojo"> Complete un número de teléfono móvil de 11 dígitos válido </font>'; } else {document.getElementById ('PhonereInfo'). innerhtml = 'Iniciar sesión con su número de teléfono móvil después del registro'; $ .AJAX ({url: "$ {path}/cuenta/checkmob", type: "post", data: "cuenta.accmob =" + $ ('#phonere'). val (), contentType: "Application/x-www-Form-UrlIncoded; charset = utf-8", async: false, éxito: function (data) {data = data; if (data) document.getElementById ('PhonereInfo'). $ .AJAX ({URL: "$ {PATH}/Account/ReaImCodeGetVecode", type: "Post", Data: "Account.ACCMOB =" + $ ('#Phonere'). Val () + "& FromSource = 4 & SMSCount =" + $ ('#smScount'). Val () +"& SearchName =" +$. Trim ($ ('#inputCaptcha'). val ()), contentType: "Application/X-WWW-Form-URLEncoded; Charset = UTF-8", async: false, éxito: function (data) {myArray = data.split ("&"); Document.getElementById ('PhonereInfo'). InnerHtml = '<Font Color = "Green"> Se ha enviado el código de verificación, tenga cuidado de verificarlo </font> Accountfid = myArray [1]; El número solo se puede aplicar hasta 3 veces al día! Error de verificación! '+Data); } var smscount = parseInt ($ ('#smscount'). val ()); SMSCount = SMSCount <3? SMSCount+1: 3; $ ('#SMSCount'). Val (SMSCount); } // Registre una nueva cuenta de usuario // es la clase de usuario @Action (value = "reaImCodegetVecode") public void reaImCodegetVecode () {printWriter out; String result = "La aplicación del código de verificación falló! ¡Inténtelo de nuevo!"; Pruebe {smSUnit = new SmSUnit (confutil.getProperty ("sys_sms_server")); if (null! = Account.getAccMob () &&! Account.getAccMob (). Equals ("")) {Account.SetAccStatus (new BigDecimal (1); // Estado de uso de String: no se usa CodeCode de verificación de cadena = String .ValueOf (new Random (). NextInt (8999999) + 100000); // Generación de Código de verificación de Generaciones cuenta.setfSecurityCode (VerifyCode); cuenta.setAccCreateDate (nueva fecha ()); Calendario c = calendario.getInstance (); C.Add (calendario.day_of_month, 1); // Establezca el tiempo de vencimiento del código de verificación a la cuenta de 24 horas. AccountCriteria.CreateCriteria (). AndaccMobequalto (Account.GetAccMob ()); Lista <COPATE> ACCS = AccountService .SelectByExample (AccountCriteria); // Número de solicitudes de código de verificación int re = 0; Entero cishu = 0; // Si el usuario no existe (ACCS == NULL || Accs.IsEmpty ()) {cishu = 1; cuenta.setsdkurl ("1"); cuenta.setfsecurityOuttime (c.gettime ()); // Establezca el tiempo de validez del código de verificación BigDecimal accid = AccountService.getPrimaryKey (); cuenta.setfid (accid); re = cuentas de servicio.insertselective (cuenta, iputil.getRealip (solicitud)); Cookie cookie = nueva cookie ("id", accid.toString ()); Cookie.SetMaxage (Integer.max_value); Response.AddCookie (Cookie); } else {cuenta ac = ac.get (0); cuenta.setfid (ac.getfid ()); Fecha fecha = nueva fecha (); // Determine el número de códigos de verificación por tiempo // Si es un nuevo día, cambie el número de usos a 1 if (date.getDate ()> = ac.getfsecurityOuttime (). GetDate ()) {cuenta.setsdkurl ("1"); } else {Integer Count = Integer.ParseInt (ac.getSdkurl ()); cuenta.setsdkurl (cuenta + 1 + ""); // Si no es un nuevo día, el número de veces +1} cishu = integer.parseInt (cuenta.getSdkurl ()); cuenta.setfsecurityOuttime (c.gettime ()); if (cishu <= 3) re = cuento de servicio .UpdateByPrimaryKeySelective (cuenta); // Guardar el código de verificación para enviar información} if (re> 0 && cishu <= 3) {request.getSession (). RemoveAtTribute (constValues.web_session_promote); AccountCriteria AC = New AccountCriteria (); ac.createCriteria (). AndaccMobequalto (cuenta.getAccMob ()); List <Coence> aclist = new ArrayList <COUNTAT> (); aclist = AccountService.SelectByExample (AC); if (aclist! = null && aclist.size ()> 0) {// Envía contenido de cadena aquí para ejecutar el mensaje SMS aquí = "Su código de verificación es:" + VerifyCode + ", el código es válido durante 24 horas, el código solo se puede usar una vez. [SMS Signature]"; SendSmsReply sendSmsRply = smsunit.sendsms (AccName, ACCPWD, Account.GetAccMob (), Content, ""); // llamando a una interfaz de terceros para enviar el resultado SMS = sendSmsRply.getRepreplymsg () + "&" + aclist.get (0) .getfid () + "&" + aclist.get (0) .getSdkurl (); }} else if (cishu> 3) {resultado = "aplicación restringida"; }}} catch (Exception e) {logger.error ("Error al obtener el código de verificación", e); } Finalmente {try {Response.SetContentType ("Text/Html; Charset = UTF-8"); respuesta.setcharacterEncoding ("UTF-8"); out = respuesta.getWriter (); out.write (resultado); } catch (ioException e) {logger.error ("", e); }}} //This is the reference code for sending SMS functions of the Power Thinking Lexin third-party SMS interface: /** * Send SMS* @param accName Lexin account username* @param accPwd Lexin account password* @param seed Current time format: YYYYMMDD HHMISS For example: 20130806102030 * @param aimcodes Mobile phone number is separated by a half-width coma entre múltiples números de teléfono móvil* @param Contenido Agregue firma después del contenido* @param Schtime Formato de tiempo: 2010-01-01 08:00:00* @return El resultado devuelto por el servidor: ID de negocio o código de error*/ public static sendsms (String AccName, String ACCPWD, String Mobies, String Content, Contenido, Schtime) {StringBuffer SB = New New StringBuffer ("http://sdk.lx198.com/sdk/send2?"); intente {String Seed = new SimpleDateFormat (dateFormatStr) .Format (nuevo date ()); sb.append ("& accName ="+AccName); sb.append ("& semilla ="+semilla); sb.append ("& AccPwd ="+MD5.GetMd5String (MD5.GetMd5String (AccPwd)+Seed)); sb.append ("& aimCodes ="+mobies); sb.append ("& schtime ="+urlencoder.encode (Schtime, "UTF-8")); // codifica la conversión en la puntuación espacial sb.append ("& content ="+urlencoder.encode (content, "UTF-8")); // codifica la conversión en URL china URL = nueva URL (SB.ToString ()); Httpurlconnection Connection = (httpurlconnection) url.openconnection (); Connect.SetRequestMethod ("Post"); BufferedReader in = new BufferedReader (new InputStreamReader (url.openStream ())); return in.readline (); } catch (Exception e) {E.PrintStackTrace (); } return null; }Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.