1. <?php
  2. namespace Admin\Controller;
  3. use Think\Model;
  4. class UserModel extends Model{
  5. public function login(){
  6. //用户名和密码
  7. $username = I("post.username");
  8. $$password = I("post.password");
  9. //验证用户信息
  10. $info = $this->where(array('username'=>$username))->find();
  11. if($info){
  12. //双MD5加密
  13. if($info['password']==md5(md5($password) .$info['salt'])){
  14. //记录登录标识
  15. session('id',$info['id']);
  16. session('username',$info['username']);
  17. return true;
  18. }else{
  19. return 2;//密码错误
  20. }
  21. }else{
  22. return 1;//用户信息不存
  23. }
  24. }
  25. }
  26. ?>
  1. <?php
  2. namespace Admin\Controller;
  3. use Think\Controller;
  4. class BackController extends Controller{
  5. public function login(){
  6. // 载入一个登录的页面
  7. if(IS_POST){
  8. $userModel =D("User");
  9. $status = $userModel->login();
  10. //true 代表成功 1代表用户不存在2代表密码错误
  11. if($status === true){
  12. $this->success('登陆成功',U('Goods/lst'));exit();
  13. }else if($status === 1){
  14. $this->error('登录失败,用户名不存在');
  15. }elseif($status === 2){
  16. $this->error('登录失败,密码错误');
  17. }
  18. }
  19. $this->display();
  20. }
  21. }
  22. ?>

加密算法:
TP内置的加密的类(堆成加密)
image.png

  1. public function test24(){
  2. $cryptObj = new Crypt();
  3. $password= 'admin88';
  4. $key=1;
  5. $mw = $cryptObj->encrypt($password,$key);
  6. dump($mw);
  7. }
  8. public function test25(){
  9. $mw = 'xxxaadsasdasdasd';
  10. $key=1;
  11. $cryptObj = new Crypt();
  12. $ss=$cryptObj->decrypt($mw,$key);
  13. dump($ss);
  14. }

image.png
image.png
image.png

登录的验证码

使用TP内置的自动验证完成登录时候表单的验证信息,同时做一个验证的使用
1.在BackController.class.php定义一个code方法,生成一个验证

  1. public function code(){
  2. $config= array(
  3. 'fontSize' => 30, //验证码的字体大小
  4. 'length'=> 3, //验证码的位数
  5. 'useNoise'=> false, // 关闭验证码杂点
  6. );
  7. $Verify=new \Think\Verify($config);
  8. $Verify->entry();
  9. }

2.在login.html页面调用上面的code方法
image.png
3.在BackController.class.php的login方法里面进行验证
image.png

防止翻墙操作

image.png
image.png

分页

image.png