Maison  >  Article  >  cadre php  >  Comment configurer le routage dans ThinkPHP pour masquer l'arrière-plan !

Comment configurer le routage dans ThinkPHP pour masquer l'arrière-plan !

青灯夜游
青灯夜游avant
2021-09-08 20:04:203595parcourir

ThinkPHPComment masquer l'arrière-plan ? L'article suivant vous présentera comment ThinkPHP utilise intelligemment les règles de routage pour masquer l'arrière-plan, rendant ainsi votre site Web plus sécurisé !

Comment configurer le routage dans ThinkPHP pour masquer l'arrière-plan !

Comme nous le savons tous, si le module backend du framework thinkphp s'appelle admin, vous pouvez directement utiliser http://nom de domaine/admin pour accéder au backend administrateur. Cette méthode d'accès est très pratique. , mais il y a aussi de gros problèmes Risques de sécurité, les pirates peuvent facilement deviner votre backend puis utiliser la force brute pour pirater le backend. Alors, existe-t-il un moyen de résoudre ce danger caché ? Voyons comment utiliser les règles de routage pour modifier le chemin du backend afin d'empêcher les pirates informatiques de connaître notre entrée backend. Il existe de nombreux tutoriels sur la façon de masquer l'administrateur en arrière-plan sur Internet, mais le plus utile est cette méthode de règle de routage.

Comment configurer le routage dans ThinkPHP pour masquer larrière-plan !

La première étape consiste à ajouter des paramètres de réglage en arrière-plan qui peuvent modifier le nom du module d'arrière-plan

1,

Comment configurer le routage dans ThinkPHP pour masquer larrière-plan !

2 Enregistrez le code clé des paramètres, comme suit :

.
if(request()->isPost()) {
	$data=input('post.');
	//获取系统全部模块名
	$system_module = [];
	foreach (scandir(APP_PATH) as $dir) {
		if($dir == '.' || $dir == '..') {
			continue;
		}
		if(is_dir(APP_PATH.$dir)) {
			array_push($system_module, $dir);
		}
	}
	foreach ($data as $key => $vo) {
		if($key == 'admin_module' && $vo != 'admin' && in_array($vo, $system_module)) {
			$this->error('后台地址不能与现有系统模块名同名');
		}
	}
}

Remarques :

  • admin_module est la clé pour enregistrer le nom du module d'arrière-plan dans ma base de données
  • APP_PATH est une constante de la version thinkphp5.0. S'il s'agit d'autres versions, veuillez la modifier vous-même.

La deuxième étape consiste à lire les informations de configuration du site Web dans application/common.php

1. La structure principale du tableau des données de configuration est la suivante :

DROP TABLE IF EXISTS `config`;
CREATE TABLE `config` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `key` varchar(255) DEFAULT NULL,
  `val` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2. sysconfig($name) méthode : obtenez-le en fonction du nom de la clé La valeur correspondante

<?php
use think\Cache;
use app\common\model\Config;

/**
 * 获取或配置系统参数
 * @param string $name  参数名称
 * @return string
 */
function sysconfig($name) {
	$config = Cache::get(&#39;config&#39;);
    if (empty($config)) {
        $config = Config::column(&#39;key,val&#39;);
		Cache::set(&#39;config&#39;,$config,1800);//缓存30分钟 
    }
    return isset($config[$name]) ? $config[$name] : &#39;&#39;;
}

Ajouté :

1 S'il s'agit simplement d'un système pour un usage personnel et que vous ne voulez pas être si gênant, vous pouvez également ajouter directement la configuration suivante. à config.php :

return [
    // +----------------------------------------------------------------------
    // | 应用设置
    // +----------------------------------------------------------------------
	// 后台模块名
    &#39;admin_module&#39;           => &#39;myadmin&#39;,
]

2. Puis appelez-le directement dans le projet :

$admin_module = Config(&#39;admin_module&#39;);

La troisième étape, la configuration de la route application/route.php

<?php
use think\route;

$route_config = [
	&#39;index&#39;=>&#39;index/index&#39;,
];
//1.获取后台模块
$admin_module = sysconfig(&#39;admin_module&#39;);
if ($admin_module == &#39;&#39;) {
    $admin_module = &#39;admin&#39;;
}
//2.设置后台路由
if ($admin_module != &#39;admin&#39;) {
    $admin_route_config = [
		//路由禁止:原理是把它指到非登陆地址,在没有登陆情况下,跳转到404页面;
		&#39;admin/$&#39; => &#39;admin/login/jump&#39;,
		&#39;admin/login$&#39; => &#39;admin/login/jump&#39;,
		&#39;admin/login/index&#39; => &#39;admin/login/jump&#39;,
		$admin_module . &#39;/$&#39; => &#39;admin/login/index&#39;,	
    ];
    $route_config = array_merge($route_config, $admin_route_config);
}
return $route_config;

La quatrième étape, ajoutez le jump() méthode de vérification des sauts dans le contrôleur de connexion Login.php

1. Cette méthode jump() est en fait la méthode désignée pour interdire les routes dans notre troisième étape

public function jump() {
	if(!Session::has(&#39;uid&#39;)) {
		$request = Request::instance();
		if(sysconfig(&#39;admin_module&#39;) == &#39;admin&#39; || sysconfig(&#39;admin_module&#39;) == &#39;&#39;) {
			$this->redirect(&#39;@admin/login/index&#39;);
		} else {
			header("HTTP/1.1 404 Not Found");
			return $this->fetch(APP_PATH.&#39;/404.html&#39;);
		}
	} else {
		$this->redirect(&#39;@admin/index/index&#39;);
	}
}

2. Le code dans jump() ci-dessus n'a qu'une seule fonction. , c'est-à-dire que l'accès à une route interdite sans vous connecter entraînera un saut vers la page 404, comme suit :

Comment configurer le routage dans ThinkPHP pour masquer larrière-plan !

3 La page 404.html est placée dans le répertoire de l'application, et le code est le suivant :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>很抱歉,此页面暂时找不到!</title>

<style type="text/css">
body {margin: 0px; padding:0px; font-family:"微软雅黑", Arial, "Trebuchet MS", Verdana, Georgia,Baskerville,Palatino,Times; font-size:16px;}
div{margin-left:auto; margin-right:auto;}
a {text-decoration: none; color: #1064A0;}
a:hover {color: #0078D2;}
img { border:none; }
h1,h2,h3,h4 {
/*	display:block;*/
	margin:0;
	font-weight:normal; 
	font-family: "微软雅黑", Arial, "Trebuchet MS", Helvetica, Verdana ; 
}
h1{font-size:44px; color:#0188DE; padding:20px 0px 10px 0px;}
h2{color:#0188DE; font-size:16px; padding:10px 0px 40px 0px;}

#page{width:910px; padding:20px 20px 40px 20px; margin-top:80px;}
.button{width:180px; height:28px; margin-left:0px; margin-top:10px; background:#009CFF; border-bottom:4px solid #0188DE; text-align:center;}
.button a{width:180px; height:28px; display:block; font-size:14px; color:#fff; }
.button a:hover{ background:#5BBFFF;}
</style>

</head>
<body>

<div id="page" style="border-style:dashed;border-color:#e4e4e4;line-height:30px;">
	<h1>抱歉,找不到此页面~</h1>
	<h2>Sorry, the page you&#39;re trying to find has moved. </h2>
	<font color="#666666">你请求访问的页面,暂时找不到!</font><br /><br />
	<div class="button">
		<a href="javascript:;" onClick="javascript :history.back(-1);" title="返回上一页">返回上一页</a>
	</div>
</div>

</body>
</html>
.

4. Comment se déconnecter

public function logout() {
	if(Session::has(&#39;adminid&#39;)) {
		Session::delete(&#39;adminid&#39;);
	}
	$this->redirect(url(&#39;@&#39;.sysconfig(&#39;admin_module&#39;)));
}

Adresse originale : https://juejin.cn /post/6981428649765371940

Pour plus de connaissances sur la programmation, veuillez visiter : Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer