Как можно реализовать так чтобы не смогли зайти в админ панель через URL?
if($_SESSION['role'] != 'admin'){
header("Location:/");
}
else {
 // ...показываем админку
}
// Если юзер не админ то перенаправление на главную. Роль назначаем при авторизации.
Можно использовать HTTP BASIC AUTH например.
https://www.php.net/manual/ru/features.http-auth.php$login = 'admin';
$password = 'password';

if (!isset($_SERVER['PHP_AUTH_USER'])) {
	header('WWW-Authenticate: Basic realm="Administration"');
	header($_SERVER['SERVER_PROTOCOL'].' 401 Unauthorized');
	
	echo 'Доступ запрещен';
} else {
	if ($_SERVER['PHP_AUTH_USER'] == $login) {
		if ($_SERVER['PHP_AUTH_PW'] == $password) {
			// все ок, можно передать в шаблон логин например $_SERVER['PHP_AUTH_USER']
		} else {
			header('WWW-Authenticate: Basic realm="Админка"');
			header($_SERVER['SERVER_PROTOCOL'].' 401 Unauthorized');
		}
	}
	
}