Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk mengkonfigurasi penghalaan dalam ThinkPHP untuk menyembunyikan latar belakang!

Bagaimana untuk mengkonfigurasi penghalaan dalam ThinkPHP untuk menyembunyikan latar belakang!

青灯夜游
青灯夜游ke hadapan
2021-09-08 20:04:203578semak imbas

ThinkPHPBagaimana untuk menyembunyikan latar belakang? Artikel berikut akan memperkenalkan kepada anda cara ThinkPHP bijak menggunakan peraturan penghalaan untuk menyembunyikan latar belakang, menjadikan tapak web anda lebih selamat!

Bagaimana untuk mengkonfigurasi penghalaan dalam ThinkPHP untuk menyembunyikan latar belakang!

Seperti yang kita semua tahu, jika modul hujung belakang rangka kerja thinkphp dinamakan admin, anda boleh terus menggunakan http://domain nama/admin Kaedah akses ini sangat mudah, tetapi ia juga mempunyai risiko keselamatan yang besar. Jadi adakah cara untuk menyelesaikan bahaya tersembunyi ini? Mari kita bincangkan cara menggunakan peraturan penghalaan untuk mengubah suai laluan bahagian belakang untuk menghalang penggodam daripada mengetahui pintu masuk bahagian belakang kami. Terdapat banyak tutorial untuk menyembunyikan pentadbir latar belakang di Internet, tetapi yang benar-benar berguna ialah kaedah peraturan penghalaan ini.

Bagaimana untuk mengkonfigurasi penghalaan dalam ThinkPHP untuk menyembunyikan latar belakang!

Langkah pertama ialah menambah parameter tetapan di latar belakang yang boleh mengubah suai nama modul latar belakang

1,

Bagaimana untuk mengkonfigurasi penghalaan dalam ThinkPHP untuk menyembunyikan latar belakang!

2. Kod utama untuk menyimpan tetapan adalah seperti berikut:

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('后台地址不能与现有系统模块名同名');
		}
	}
}

Nota:

  • module_admin Ya Kunci
  • APP_PATH dalam pangkalan data saya yang menyimpan nama modul bahagian belakang ialah pemalar versi thinkphp5.0 Jika versi lain, sila ubah suainya diri sendiri.

Langkah kedua ialah membaca maklumat konfigurasi tapak web dalam application/common.php

1 jadual data adalah seperti berikut:

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. kaedah sysconfig($name): Dapatkan nilai yang sepadan mengikut nama kunci

<?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;;
}

Tambahan:

1. Jika ia hanya individu Jika anda tidak mahu menghadapi banyak masalah dengan sistem yang anda gunakan, anda juga boleh menambah konfigurasi berikut terus ke config.php:

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

2. Kemudian panggil terus dalam projek:

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

Langkah ketiga, aplikasi penetapan laluan/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;

Langkah keempat, tambahkan kaedah log masuk Log masuk.php Jump() untuk pengesahan lompat

1 Kaedah lompat() ini sebenarnya kaedah yang ditetapkan untuk melumpuhkan penghalaan dalam langkah ketiga kami

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 Lompat() ) di atas hanya mempunyai satu fungsi, iaitu, mengakses laluan yang dilarang tanpa log masuk akan melompat ke halaman 404, seperti berikut:

Bagaimana untuk mengkonfigurasi penghalaan dalam ThinkPHP untuk menyembunyikan latar belakang!

3 , 404.html halaman diletakkan dalam direktori aplikasi, kodnya adalah seperti berikut:

<!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 Cara untuk log keluar

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

Alamat asal: https://juejin.cn /post/6981428649765371940

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila layari: Pengenalan kepada Pengaturcaraan ! !

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi penghalaan dalam ThinkPHP untuk menyembunyikan latar belakang!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam