1、对输入信息进行验证的类(主要用于验证用户名,密码,重复密码,邮箱,可添加其它功能)
复制代码 代码如下:
<?php
/**
* Validator for Register.
*/
final class RegisterValidator {
private function __construct() {
}
/**
* Validate the given username, password, repeat_password and email.
* @param $username, $password, $repeat_password and $email to be validated
* @return array array of {@link Error} s
*/
public static function validate($username, $password, $repeat_password, $email) {
$errors = array();
$username = trim($username);
$password = trim($password);
if (!$username) {
$errors[] = new Error('username', '用户名不能为空。');
} elseif (strlen($username)<3) {
$errors[] = new Error('username', '用户名长度不能小于3个字符。');
} elseif (strlen($username)>30) {
$errors[] = new Error('username', '用户名长度不能超过30个字符。');
} elseif (!preg_match('/^[A-Za-z]+$/',substr($username, 0, 1))) {
$errors[] = new Error('username', '用户名必须以字母开头。');
} elseif (!preg_match('/^[A-Za-z0-9_]+$/', $username)) {
$errors[] = new Error('username', '用户名只能是字母、数字以及下划线( _ )的组合。');
} elseif (!$password) {
$errors[] = new Error('password', '密码不能为空。');
} elseif (strlen($password)<6) {
$errors[] = new Error('password', '密码长度不能小于6个字符。');
} elseif (strlen($password)>30) {
$errors[] = new Error('password', '密码长度不能超过30个字符。');
} elseif (!preg_match('/^[A-Za-z0-9!@#\\$%\\^&\\*_]+$/', $password)) {
$errors[] = new Error('password', '密码只能是数字、字母或!@#$%^&*_等字符的组合。');
} elseif ($password != trim($repeat_password)) {
$errors[] = new Error('password', '两次输入密码不一致。');
} elseif (!Utils::isValidEmail($email)) {
$errors[] = new Error('email', '邮箱格式有误。');
} else {
// check whether user exists or not
$dao = new UserDao();
$user = $dao->findByName(trim($username));
if ($user) {
$errors[] = new Error('username', '该用户名已经被使用。');
}
$user = null;
// check whether email being used or not
$user = $dao->findByEmail(trim($email));
if ($user) {
$errors[] = new Error('email', '该邮箱已被注册。');
}
}
return $errors;
}
}
?>
2、在注册页面进行调用
复制代码 代码如下:
$username = null;
$password = null;
$repeat_password = null;
$email = null;
$msg = "";
if (isset($_POST['username']) && isset($_POST['password'])
&& isset($_POST['repeat_password']) && isset($_POST['email'])) {
$username = addslashes(trim(stripslashes($_POST ['username'])));
$password = addslashes(trim(stripslashes($_POST ['password'])));
$repeat_password = addslashes(trim(stripslashes($_POST ['repeat_password'])));
$email = addslashes(trim(stripslashes($_POST ['email'])));
// validate
$errors = RegisterValidator::validate($username, $password, $repeat_password, $email);
// validate
if (empty($errors)) {
// save
$dao = new UserDao();
$user = new User();
$user->setEmail($email);
$last_login_ip = Utils::getIpAddress();
$user->setLastLoginIp($last_login_ip);
$user->setUsername($username);
$salt = substr(sha1(mt_rand()), 0, 22);
$hash_password = sha1($salt . $password);
$user->setPassword($hash_password);
$user->setSalt($salt);
$user = $dao->save($user);
if ($user) {
UserLogin::setUserInfo($user);
Flash::addFlash('注册成功!');
}
else {
Flash::addFlash('对不起,由于服务器内部错误,导致注册失败。请稍后再试。');
}
Utils::redirect('welcome');
}
foreach ($errors as $e) {
$msg .= $e->getMessage()."<br>";
}
3.代码中Error类用于记录验证时的错误信息
复制代码 代码如下:
<?php
/**
* Validation error.
*/
final class Error {
private $source;
private $message;
/**
* Create new error.
* @param mixed $source source of the error
* @param string $message error message
*/
function __construct($source, $message) {
$this->source = $source;
$this->message = $message;
}
/**
* Get source of the error.
* @return mixed source of the error
*/
public function getSource() {
return $this->source;
}
/**
* Get error message.
* @return string error message
*/
public function getMessage() {
return $this->message;
}
}
?>
相关推荐:
SEO收集:如何通过有效数据收集提升网站排名,鞍山商城网站建设报价
seo站内链接有什么作用,seo中网站内链的作用 ,781900ai
seo需要什么部门,seo主要干什么 ,ai接入仪器
SEO符合:提升网站排名的秘诀,助力企业赢在搜索引擎优化的赛道,优化没续费 网站没了
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化
什么是seo网络推广,seo网络推广技术 ,ai写真官方
用AI写文,开启创作新时代
SEO快速优化技术:助力网站流量暴增,轻松登顶搜索引擎,铜陵ai全网通推广软件
二SEO是什么,h二seo三是什么 ,ai手术机
SEO本站:提升网站流量与排名的秘密武器,荆门专业的抖音seo
SEO对策:提升网站排名与流量的必备策略,SEO入门相机平价学生
ChatGPT最近不好用了?了解这些背后的原因与解决方案,ai sketcher
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
360优化关键词-提升网站流量与排名的秘密武器,美拍ai
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
seo该从什么开始,seo是什么时候开始的 ,ai写作免费英文怎么说
为什么seo推广那么多,seo推广难吗 ,东莞ai听译平台
SEO选择:如何挑选最合适的SEO优化策略?,wb免费刷粉网站推广
为什么要seo排名,为什么要做seo推广 ,AI写作开启创意新世界
SEO桔子:提升网站排名的必备法宝,seo外包销售
SEO技巧提升网站流量:打造高效网站的关键策略,Ai测脸相
ChatGPT+维护页面:您的智能助手之旅,安全、高效、无忧,奥特曼画图ai
AI一键生成文章在线:提升创作效率,改变写作方式
未来工作方式!AI在线工具让效率倍增,工作变轻松
SEO韩国:为您开启国际市场的增长之门,seo文章标题有哪些
AI免费文章解读:智能写作新篇章,小店AI
GPT怎么收费?揭秘AI技术的定价与价值,ai报考高考
为什么做抖音seo,为什么做抖音推广 ,描边ai虚线
SEO提高:如何通过精准优化让网站流量翻倍,优化排名seo加盟费用
ChatGPT安装包Windows版:让AI助力你的工作与生活,人工智能ai不是梦在线
SEO引擎优化方法-让你的网站流量暴增的实战指南,ai智慧树
什么是蜘蛛弛?揭秘这个SEO优化背后的神秘工具,南沙seo优化排名价格
ChatGPT的VPN梯子:畅享全球互联网自由,打破地域限制,一直搜Ai
seo营销到底是什么,seo算什么营销 ,ai里面新建
SEO包含的秘密:让你的网站轻松排上首页,新媒体营销推广方案目录
ChatGPT显示无法加载网站是怎么回事?解决方法!,glow将军ai
SEO指:如何通过精准优化提高网站流量和转化率,无锡论坛营销推广要多久
中国AI软实力崛起:技术创新与产业应用的完美融合,seo0066
ChatGPT常见问题汇总:解答你关于AI的一切疑惑,松鼠ai智能教适应教育
怎么降低文章的AI生成率:打造更真实、更有价值的内容
OpenAI银联支付-未来支付新体验,安全便捷全新升级,医学加ai
AI智能软件:未来科技的核心力量
SEO领先-如何借助SEO技术让您的网站脱颖而出,seo是黑客吗
为什么要seo 运营,为什么需要seo ,ai人物头盔
什么是seo网站推广,什么是seo网站推广 ,ai酷男人
SEO分类:从基础到进阶,全面解析SEO优化的关键要素,新建设网站排名
AI代谢文章:从灵感到成果的创作革命
亚马逊的seo是什么阿,亚马逊seo项目 ,中考用ai写作会判0分吗
SEO范例:如何通过优化提升网站流量,获取更多商机,广州抖音seo搜索广告
怎么用AI缩写文章,轻松提高效率的全新方法