当前位置:Gxlcms > PHP教程 > tp框架防止登陆后敲地址进入后台

tp框架防止登陆后敲地址进入后台

时间:2021-07-01 10:21:17 帮助过:6人阅读

  1. <?php
  2. namespace AdminController;
  3. use ThinkController;
  4. class IndexController extends Controller {
  5. public function index(){
  6. $this->display();
  7. }
  8. public function login(){
  9. $username = I('username');
  10. $password = I('password');
  11. $user = D('User');
  12. $res = $user->where(array('username'=>$username))->find();
  13. // dump($res);die;
  14. if(!$res || md5($password) != $res['password']){
  15. $this->error('用户名或密码错误');
  16. }else{
  17. session('username',$res['username']);
  18. session('id',$res['id']);
  19. session('create_time',$res['create_time']);
  20. //dump(session());die;
  21. $this->redirect('/Admin/Main/index'); //跳转到后台管理
  22. }
  23. }
  24. //清空
  25. public function loginout(){
  26. session(null);
  27. //dump(session());
  28. $this->redirect('/Admin/Index/index');
  29. }
  30. }

  1. <?php
  2. //后台页面的控制器
  3. namespace AdminController;
  4. use ThinkController;
  5. class MainController extends Controller {
  6. public function index(){
  7. $this->display();
  8. }
  9. }

应该怎么判断,在地址栏敲地址不能随意进入登陆页或后台系统

回复内容:

  1. <?php
  2. namespace AdminController;
  3. use ThinkController;
  4. class IndexController extends Controller {
  5. public function index(){
  6. $this->display();
  7. }
  8. public function login(){
  9. $username = I('username');
  10. $password = I('password');
  11. $user = D('User');
  12. $res = $user->where(array('username'=>$username))->find();
  13. // dump($res);die;
  14. if(!$res || md5($password) != $res['password']){
  15. $this->error('用户名或密码错误');
  16. }else{
  17. session('username',$res['username']);
  18. session('id',$res['id']);
  19. session('create_time',$res['create_time']);
  20. //dump(session());die;
  21. $this->redirect('/Admin/Main/index'); //跳转到后台管理
  22. }
  23. }
  24. //清空
  25. public function loginout(){
  26. session(null);
  27. //dump(session());
  28. $this->redirect('/Admin/Index/index');
  29. }
  30. }
  31. <?php //后台页面的控制器
  32. namespace AdminController;
  33. use ThinkController;
  34. class MainController extends Controller {
  35. public function index(){
  36. $this->display();
  37. }
  38. }

应该怎么判断,在地址栏敲地址不能随意进入登陆页或后台系统

在Index控制器的__initialize方法中,判断你的session有没有被赋值。没有跳转到登录。
具体参考
TP框架__initialize方法

看你的意思应该是不想让别人进入后台 也就是登陆页都不让进吧?如果是可以试试配置可以访问的模块 如果想判断这个人登陆没登陆 那就是判断session了

给你点资料 你试试 如果可以你就部署到服务器的设置下 本地就不要设置了
禁止访问模块

  1. 3.2对模块的访问是自动判断的,所以通常情况下无需配置模块列表即可访问,但可以配置禁止访问的模块列表(用于被其他模块调用或者不开放访问),默认配置中是禁止访问Common模块和Runtime模块(Runtime目录是默认的运行时目录),我们可以增加其他的禁止访问模块列表:
  2. // 设置禁止访问的模块列表
  3. 'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
  4. 设置后,Api模块不能通过URL直接访问,事实上,可能我们只是在该模块下面放置一些公共的接口文件,因此都是内部调用即可。
  5. 设置访问列表
  6. 如果你的应用下面模块比较少,还可以设置允许访问列表和默认模块,这样可以简化默认模块的URL访问。
  7. ***'MODULE_ALLOW_LIST' => array('Home','Admin','User'),***
  8. 'DEFAULT_MODULE' => 'Home',
  9. 设置之后,除了Home、Admin和User模块之外的模块都不能被直接访问,并且Home模块是默认访问模块(可以不出现在URL地址)。

登录页都不让进,后台系统怎么登录呢

其实是判断有无验证的问题.
TP可以写一个基类(BaseController), 然后所有需要验证的控制器, 都应该继承这个基类.

  1. isAuth()) {
  2. $this->redirectToLogin();
  3. }
  4. }
  5. private function isAuth()
  6. {
  7. //验证是否登录
  8. }
  9. private function redirectToLogin()
  10. {
  11. //跳转到登录页面
  12. }
  13. }

例如, 后台有一个管理员控制器

  1. class AdminController extends BaseController
  2. {
  3. public function __construct()
  4. {
  5. parent::__construct();
  6. }
  7. }

这是TP的做法, 但是像symfony这样的框架, 自带了验证类, 可以很方便地进行http验证, accesstoken验证和自定义验证方式.

登录页不让进是不可能的,否则你的业务人员都登不上去。如果你的前后台是同一套用户系统,那就验证前台登录用户是否有进入后台的权限,没登录就正常显示登录页就好了,只要别让搜索引擎把你的后台登录地址抓过去就行

写个公共函数判断是否是登录状态

  1. function isLogin(){
  2. if(I('session.uid')){
  3. return true;
  4. }else{
  5. return false;
  6. }
  7. }

然后在后台控制器的__initialize方法里写

  1. if(!isLogin()){
  2. $this->redirect('/login') //重定向到登录页
  3. }

人气教程排行