您的位置:首页 > 编程语言 > PHP开发

ThinkPHP5开发(二)实现带后台验证的注册功能

2016-07-09 13:26 736 查看
项目代码托管于CSDN-CODE:

https://code.csdn.net/u012995856/tp5pro/tree/master

效果:



验证效果:









1.数据库SQL脚本

-- phpMyAdmin SQL Dump
-- version 4.4.15.5
-- http://www.phpmyadmin.net --
-- Host: localhost
-- Generation Time: 2016-07-09 13:12:42
-- 服务器版本: 5.7.12-log
-- PHP Version: 7.0.7

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `thinkphp5`
--

-- --------------------------------------------------------

--
-- 表的结构 `think_user`
--

CREATE TABLE IF NOT EXISTS `think_user` (
`user_id` int(11) NOT NULL,
`user_name` varchar(255) NOT NULL,
`user_sex` int(11) DEFAULT NULL,
`user_tel` varchar(255) DEFAULT NULL,
`user_email` varchar(255) DEFAULT NULL,
`user_address` varchar(255) DEFAULT NULL,
`user_birth` varchar(255) DEFAULT NULL,
`user_jointime` varchar(255) DEFAULT NULL,
`user_passwd` varchar(255) DEFAULT NULL,
`user_signature` varchar(255) DEFAULT NULL,
`user_hobby` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

--
-- 转存表中的数据 `think_user`
--

INSERT INTO `think_user` (`user_id`, `user_name`, `user_sex`, `user_tel`, `user_email`, `user_address`, `user_birth`, `user_jointime`, `user_passwd`, `user_signature`, `user_hobby`) VALUES
(1, 'thinkphp', 1, '15700000000', 'emial@email.com', '山东省济南市****路', '1111111', '111111', 'qqq', NULL, NULL),
(2, 'pangPython', 1, '15700000000', 'email@emial.com', '山东省济南市', '201607096', NULL, '123456', 'nihao', '上速度速度');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `think_user`
--
ALTER TABLE `think_user`
ADD PRIMARY KEY (`user_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `think_user`
--
ALTER TABLE `think_user`
MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


代码目录结构:



2 .写视图

view/regist/index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>注册</title>
</head>
<style>
dl{
text-align:center;
border:2px solid #00CC99;
margin-top:100px;
margin-bottom:100px;
margin-right:400px;
margin-left:400px;
}
</style>
<body>

<div id="regist_form">
<dl>
<form action="regist" method="post">
<dt>
<p>姓名:<input type="text" name="user_name"></p>
</dt>

<dt>
<p>性别:<input type="text" name="UserSex"></p>
</dt>

<dt>

<p>手机:<input type="text" name="UserTel"></p>
</dt>
<dt>

<p>邮件:<input type="text" name="UserEmail"></p>
</dt>

<dt>

<p>地址:<input type="text" name="UserAddress"></p>
</dt>

<dt>
<p>生日:<input type="text" name="UserBirth"></p>
</dt>

<dt>
<p>加入时间:<input type="text" name="UserJoinTime"></p>
</dt>

<dt>
<p>密码:<input type="password" name="UserPasswd"></p>
</dt>

<dt>
<p>个性签名:<input type="text" name="UserSignature"></p>
</dt>

<dt>
<p>喜好:<input type="text" name="UserHobby"></p>
</dt>
<dt>
<p><input type="submit" value="注册"></p>
</dt>
</form>

</dl>
</div>
</body>
</html>


3 .写控制器

controller/Regist.php

<?php
namespace app\index\controller;
use think\View;
use think\Controller;
use app\index\model\User;
class Regist extends Controller{

public function index(){
$view = new View();
return $view->fetch('index');

}

//用户注册
public function regist(){
//实例化User
$user = new User;
//接收前端表单提交的数据
$user->user_name = input('post.user_name');
$user->user_sex = input('post.UserSex');
$user->user_tel = input('post.UserTel');
$user->user_email = input('post.UserEmail');
$user->user_address = input('post.UserAddress');
$user->user_birth = input('post.UserJoinTime');
$user->user_passwd = input('post.UserPasswd');
$user->user_signature = input('post.UserSignature');
$user->user_hobby = input('post.UserHobby');
//进行规则验证
$result = $this->validate(
[
'name' => $user->user_name,
'email' => $user->user_email,
'sex' => $user->user_sex,
'tel' => $user->user_tel,
'address' => $user->user_address,
'birth' => $user->user_birth,
'password' => $user->user_passwd,
],
[
'name' => 'require|max:10',
'email' => 'email',
'sex' => 'number|between:0,1',
'tel' => 'require',
'address' => 'require',
'birth' => 'require',
'password' => 'require',
]);
if (true !== $result) {
$this->error($result);
}

//写入数据库
if ($user->save()) {
return $this->success('注册成功');
} else {
return $this->success('注册失败');
}

}
}


thinkphp5手册中提供了很多种进行验证的方法,可以在控制器进行验证,可以使用助手函数,可以在model进行验证,不过在model进行验证需要User类继承验证类,但是PHP不支持多继承。需要自己选择哪一种方式最适合。

细节方面,验证规则可以自定义实现使用正则表达式验证手机号,身份证号等。

model/User.php

<?php
namespace app\index\model;
use think\Model;
class User extends Model{
protected $pk = 'user_id';

}


访问的URL:

http://localhost/tp5/public/index.php/index/regist/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp