php实现短信倒计时验证框架

    xiaoxiao2021-04-12  27

    <?PHP class CheckReg { private $code; const outtime = 30; //超时时间 function __construct() { session_start(); $this->code = ""; } //用户名 public function CheckUser(&$err) { $err = ""; if (!isset($_POST['user'])) { $err = "请设置用户名"; } else if (strlen($_POST['user']) > 15 || strlen($_POST['user']) < 3) { $err = "长度必须在3到15个字符之间"; } $_SESSION['user'] = $_POST['user']; return $err == null ? true : false; } //手机号 public function CheckPhone(&$err, $IsReg) { $err = ""; if (!isset($_POST['tel'])) { $err = "请输入手机号"; } else if (!is_numeric($_POST['tel'])) { $err = "手机号位数不够"; } else if (!preg_match("/^1[34578]{1}\d{9}$/", $_POST['tel'])) { $err = "非法手机号"; } else if ($IsReg && isset($_SESSION['tel']) && $_SESSION['tel'] != $_POST['tel']) { $err = "手机号更改,要重新发送验证码"; } else { $_SESSION['tel'] = $_POST['tel']; $_SESSION['verify'] = rand(1000, 9999); $_SESSION['date'] = time(); } return $err == null ? true : false; } //验证码 public function CheckVerify(&$err) { $err = ""; if (!isset($_SESSION['verify']) || !isset($_SESSION['date'])) { $err = "请点击发送验证"; } else if (!isset($_POST['verify'])) { $err = "请输入验证码"; } else if ($_POST['verify'] != $_SESSION['verify']) { $err = "验证码输入不正确"; } else if ( self::outtime < (time() - $_SESSION['date'])) { $err = "验证码输入超时,请重新发送验证码"; } return $err == null ? true : false; } //密码 public function CheckCode(&$err) { $err = ""; if (!isset($_POST["code"])) { $err = "请输入置密码"; } else if (strlen($_POST["code"]) < 6 || strlen($_POST["code"]) > 20) { $err = "密码长度必须介于6-20个字符"; } if ($err != null) { if (isset($_SESSION['code'])) unset($_SESSION['code']); if (isset($_SEESION['verifycode'])) unset($_SESSION['verifycode']); } else { $_SESSION['code'] = $_POST["code"]; } return $err == null ? true : false; } //重复密码 public function CheckVerifycode(&$err) { $err = ""; if (!isset($Post["verifycode"])) { $err = "请再次输入密码"; } else if (!isset($_SESSION['code'])) { $err = "请先在上面对话框输入密码"; } else if ($Post["verifycode"] != $_SESSION['code']) { $err = "两次密码输入不一致"; } if ($err != null) { if (isset($_SESSION['verifycode'])) unset($_SESSION['verifycode']); } else { $_SESSION['verifycode'] = $_POST["verifycode"]; } return $err == null ? true : false; } public function UnsetSession() { if (isset($_SESSION['user'])) { unset($_SESSION['user']); } if (isset($_SESSION['tel'])) { unset($_SESSION['tel']); } if (isset($_SESSION['code'])) { unset($_SESSION['code']); } if (isset($_SESSION['verifycode'])) { unset($_SESSION['verifycode']); } if (isset($_SESSION['verify'])) { unset($_SESSION['verify']); } if (isset($_SESSION['date'])) { unset($_SESSION['date']); } } public function GetOutTime() { return self::outtime; } public function GetVar($var) { return isset($_SESSION[$var]) ? $_SESSION[$var] : ""; } } ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title></title> <style> .error {color: #FF0000;} </style> </head> <body> <?php // 定义变量并默认设置为空值 include_once("./SendTemplateSMS.php"); include_once("./CheckReg.php"); $checkreg = new CheckReg(); $usererr = ""; $telErr = ""; //号码错误说明 $codeerr = ""; $verifycodeerr = ""; $verifyerr = ""; $ok = 0; //号码输入成功标记 $code = ""; $verifycode = ""; if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["submit"])) { if ($_POST["submit"] == "获取验证码") { if (isset($_POST["tel"]) && $checkreg->checkPhone($telErr, 0)) { //需要验证号码正确与否 $ok = 1; sendTemplateSMS($_POST["tel"], array($checkreg->GetVar('verify'), $checkreg->GetOutTime()),"1"); //发短信 } } else if ($_POST["submit"] == "注册") { if ($checkreg->checkUser($usererr) && $checkreg->checkPhone($telErr, 1) && $checkreg->CheckVerify($verifyerr) && $checkreg->CheckCode($codeerr) && $checkreg->CheckVerifycode($verifycodeerr)) { echo "注册成功"; $checkreg->UnsetSession(); } else { echo "注册失败"; } } } ?> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" > 用户名(3~15个字符):<input type="text" name="user" value="<?php echo $checkreg->GetVar("user");?>" > <span class="error"> * <?php echo $usererr;?></span> <br> 手机号:<input type="text" name="tel" value="<?php echo $checkreg->GetVar("tel");?>" > <span class="error"> * <?php echo $telErr;?></span> <br> 手机验证码: <input type="text" name="verify"> <input type="submit" name="submit" value="获取验证码" > <span class="error"> * <?php echo $verifyerr;?></span> <br> 密码(6-20位字符):<input type="text" name="code" value="<?php echo $checkreg->GetVar("code");?>" > <span class="error"> * <?php echo $codeerr;?></span> <br> 确认密码:<input type="text" name="verifycode" value="<?php echo $checkreg->GetVar("verifycode");?>"> <span class="error"> * <?php echo $verifycodeerr;?></span> <br> <input type="submit" name="submit" value="注册"> </form> <script type="text/javascript"> var countdown=<?php echo $outtime; ?>; var first = 1; function settime() { if (countdown == 0) { document.getElementsByName("submit")[0].removeAttribute("disabled"); document.getElementsByName("submit")[0].value="获取验证码"; countdown = <?php echo $outtime; ?>; return; } else { document.getElementsByName("submit")[0].setAttribute("disabled", true); document.getElementsByName("submit")[0].value="重新发送(" + countdown + ")"; countdown--; } setTimeout(function() { settime() } ,1000) } <?php if ($ok == 1) {?> console.log("1"); settime(); <?php } ?> </script> </body>

    转载请注明原文地址: https://ju.6miu.com/read-668118.html

    最新回复(0)