<?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>