php5注册登录,thinkPHP5——后端之登录注册修改用户信息

所需文件如下:

a653748b144237aba8d99adaacf79a0c.png

开始项目前,先打开应用调试模式(config.php,把false改成true)

一、数据库

CREATE TABLE `wyt_member` (

`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

`username` varchar(20) NOT NULL DEFAULT '' COMMENT '账号',

`password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',

`encrypt` varchar(6) NOT NULL DEFAULT '' COMMENT '加密字符串',

`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态1正常,2禁用',

PRIMARY KEY (`id`),

UNIQUE KEY `username` (`username`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';

二、文件代码

1.控制器文件Member.php

namespace app\index\controller;

use app\index\validate\Vregist;

use app\index\validate\Vlogin;

use app\index\model\User;

use app\index\validate\Vupdate;

use think\Db;

use think\Loader;

class Member{

/**

* 注册

*/

public function register($json){

//接收参数(接收json格式)

$data = json_decode($json,true);//输出形式:'username' => int 1

//参数验证(验证类)

$Vregist = new Vregist();

$result = $Vregist->check($data);

if(!$result){

return json(['code'=>400,'msg'=>$Vregist->getError()]);

}

//插入记录(model类) 密码算法: md5(md5(密码).用户名.随机6位字符)

$User=new User();

$id =$User->add($data);

//返回结果(json格式)

return $id;

}

/**

* 登录

*/

public function login($json){

//接收参数

$data = json_decode($json,true);

//参数验证

$Vlogin = Loader::validate('Vlogin');

$result = $Vlogin->check($data);

if(!$result){

return json(['code'=>400,'msg'=>$Vlogin->getError()]);

}

//用户名查表是否存在

//密码匹配

$user = new User();

$login = $user->dologin($data);

//返回登录信息

return $login;

}

/**

* 修改用户信息

*/

public function edit_info($json){

//接收参数

$data = json_decode($json,true);

//参数验证

$Vupdate = new Vupdate();

$result = $Vupdate->check($data);

if(!$result){

return json(['code'=>400,'msg'=>$Vupdate->getError()]);

}

//用户名查表是否存在

//更改用户信息

$user = new User();

$update = $user->update($data);

//返回结果

return $update;

}

}

2.模型User.php

namespace app\index\model;

use think\Db;

class User

{

/**

* 注册

* 加密算法

*/

public function add($data){

//插入记录(model类) 密码算法: md5(md5(密码).用户名.随机6位字符)

$data['encrypt'] = self::generate_password();

$data['password'] = md5(md5($data['password']). $data['username'].$data['encrypt']);

$id = Db::name('Member')->insertGetId($data);

if($id>0){

return json(['code'=>200,'msg'=>'注册成功']);

}else{

return json(['code'=>400,'msg'=>'注册失败']);

}

}

/*随机6位字符*/

function generate_password( $length=6) {

// 密码字符集,可任意添加你需要的字符

$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

$password = "";

for ( $i = 0; $i < $length; $i++ ) {

// 取字符数组 $chars 的任意元素

$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];

}

return $password;

}

/**

* 用户登录

* @return mixed

*/

public function dologin($data){

//用户名查表是否存在

$tn = Db::name('member')

->where(['username'=>$data['username']])

->find();

// dump($tn);exit();

if(empty($tn)){

return json(['code'=>'400', 'msg'=>'用户名不存在']);

}

//密码匹配

$data['password'] = md5(md5($data['password']). $data['username'].$tn['encrypt']);

// $tp = db('member')->where('password',$data['password'])->find();

if($tn['password']!=$data['password']){

return json(['code'=>'400', 'msg'=>'密码错误']);

}

//返回登录信息

return json(['code'=>200,'msg'=>'登录成功','data'=>

['id'=>$tn['id'],'username'=>$tn['username'],'status'=>$tn['status']]]);

}

/**

* 修改用户信息

* @return mixed

*/

public function update($data){

//用户名查表是否存在

$tn = Db::name('member')

->where(['id'=>$data['id']])

->find();

// dump($tn);exit();

if(empty($tn)){

return json(['code'=>'400', 'msg'=>'用户名不存在']);

}

//修改内容

$data['encrypt'] = self::generate_password();

$data['password'] = md5(md5($data['password']). $tn['username'].$data['encrypt']);

$update = Db::name('Member')->update($data);

//返回修改信息

if($update>0){

return json(['code'=>200,'msg'=>'修改成功']);

}

else{

return json(['code'=>400,'msg'=>'修改失败']);

}

}

}

3.验证器,Validate-》Vupdate.php,与其他的Vlogin.php(验证用户名和密码)以及Vregist.php(验证用户名和密码)的代码差不多

namespace app\index\validate;

use think\Validate;

class Vupdate extends Validate{

protected $rule=[

'id'=>'require|IsInt',

'password'=>'require|min:6',

];

protected $message=[

'id.require'=>'id不能为空',

'password.require'=>'密码不能为空',

'password.min'=>'密码不得少于6位',

];

protected function IsInt($value,$field){

//参数依次为验证数据,验证规则,全部数据(数组),字段名

//这里我们要判断的验证的数据要求必须为正整型

if(is_numeric($value) && is_int($value+0) && ($value+0) > 0){

return true;

}else{

//如果不符合我们的条件,返回错误信息,在控制器中可以用getError()方法输出

return $field.'id不是整型';

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值