File: /var/www/gurumedia_st_usr/data/www/gurumedia.store/frd-src/abc/frd-config.php
<?php
/*
* FRD Global Config - Version 18
* Author: SpiderEcommerce
*/
session_start();
$FR_SOFT_VERSION = "138";
// === ১. UTC TIMEZONE (CAPI এর জন্য বাধ্যতামূলক) ===
date_default_timezone_set('UTC');
// === ২. Private & Public Config লোড ===
require_once("$FR_PATH_HD" . "frd-data/config/frd-private.php");
extract(json_decode(file_get_contents("$FR_PATH_HD" . "frd-data/config/frd-public.json"), true));
// === ৩. UTC & LOCAL TIME (দুটোই দরকার) ===
// --- CAPI এর জন্য UTC Unix Timestamp ---
$FR_NOW_TIME_UTC = time();
// --- লোকাল টাইমজোন ---
$local_tz = new DateTimeZone('Asia/Dhaka');
$local_time = new DateTime('now', $local_tz);
// --- লোকাল টাইমের Unix Timestamp (অর্ডার সেভ করার জন্য) ---
$FR_NOW_TIME_LOCAL = time() + $local_time->getOffset();
$FR_NOW_TIME = $FR_NOW_TIME_LOCAL;
// === ৪. Local Date/Time ফরম্যাট (সাইটে দেখানোর জন্য) ===
$FR_NOW_DATE = $local_time->format('Y-m-d');
$FR_NOW_MONTH = $local_time->format('Y-m');
$FR_NOW_YEAR = $local_time->format('Y');
$FR_NOW_DAY_F = $local_time->format('l');
$FR_NOW_MONTH_F = $local_time->format('F');
$FR_NOW_TIME_12 = $local_time->format('h:i A');
$FR_NOW_TIME_24 = $local_time->format('H:i:s');
// === ৮. DATABASE CONNECTION (PDO) ===
try {
$FR_options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'",
PDO::ATTR_EMULATE_PREPARES => false
];
$FR_CONN = new PDO(
"mysql:host=$FRhostN;dbname=$FRdbN;charset=utf8mb4",
$FRusrN,
$FRpsw,
$FR_options
);
} catch (PDOException $e) {
error_log("DB Connection Failed: " . $e->getMessage());
die("Database connection failed. Please try again later.");
}
// === ৯. CLIENT IP (Cloudflare, Proxy সাপোর্ট) ===
function get_client_ip()
{
$headers = [
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'REMOTE_ADDR'
];
foreach ($headers as $key) {
if (!empty($_SERVER[$key])) {
$ip_list = explode(',', $_SERVER[$key]);
$ip = trim($ip_list[0]);
if (filter_var($ip, FILTER_VALIDATE_IP)) {
return $ip;
}
}
}
return $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
}
// === ৫. URLs ===
$FR_HURL_IMG = "$FRD_HURL/frd-data/img";
$FR_HURL_API = "$FRD_HURL/frd-api";
// === ৭. SUPER PANEL URL ===
$FR_SP_HURL_DP = "$FRD_HURL/frdsp/dp";
$c_hurl_frd = "$FRD_HURL/customer";
if (isset($_SERVER['HTTP_REFERER'])) {
$http_referer_frd = $_SERVER['HTTP_REFERER'];
}
$FRc_USER_IP = get_client_ip();
$FRc_USER_AGENT = $_SERVER['HTTP_USER_AGENT'] ?? '';
$FRc_THIS_PAGE_URL = $FRD_HURL . $_SERVER['REQUEST_URI'];
// === ১০. USER ID (কুকি থেকে) ===
if (!isset($_COOKIE['FRcook_USER_UID'])) {
$FRc_USER_UID = "sx" . bin2hex(random_bytes(7)); // 2 + 14 = 16 chars
setcookie('FRcook_USER_UID', $FRc_USER_UID, [
'expires' => time() + (86400 * 365),
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax'
]);
} else {
$FRc_USER_UID = $_COOKIE['FRcook_USER_UID'];
}
$FRc_EVENT_ID = bin2hex(random_bytes(8));
$FRc_EXTERNAL_ID = $FRc_USER_UID;
require_once __DIR__ . '/meta_cookies.php';
$fbp = generate_fbp_cookie();
$fbc = generate_fbc_cookie();
$FRSSCSERVER = [
"0" => "http://localhost/p/p16_ssc/ssc-secom3-dfyix/frd-ssc-call.php",
"1" => "https://fraiserver.fazlerabbidhali.com/ssc-secom3-dfyix/frd-ssc-call.php",
"2" => "https://fraiserver.fazlerabbidhali.com/ssc-secom3-dfyix/frd-ssc-call.php",
"3" => "https://fraiserver.fazlerabbidhali.com/ssc-secom3-dfyix/frd-ssc-call.php"
];
// === ৬. TABLE NAMES ===
$FRxx_OT = "frd_order_invo";
$FRx1_OT = "orderstoken_t_frd.php";
$FRxx_OI = "frd_orditems";
$FRx1_OI = "orderss_t_frd.php";
$FRxx_coup = "frd_couponn";
$FRx1_coup = "couponn_t_frd.php";
$FRxx_4 = "frd_complimng";
$FRx1_4 = "complain_t_frdnux.php";
$FRxx_5 = "frd_nct";
$FRx1_5 = "nct_t_frhux.php";
/**
* TEMPORARY FIX: Delete invalid _fbp cookies (old incorrect format)
* Author: Fazle Rabbi (Spider eCommerce)
* Duration: 1 year (remove after 2026-11-11)
*/
if (isset($_COOKIE['_fbp'])) {
$fbp = $_COOKIE['_fbp'];
// Example of correct format: fb.1.1731308324000.123456789012345
$pattern = '/^fb\.1\.\d{13}\.\d+$/'; // fb.1.<13-digit timestamp>.<numeric random>
if (!preg_match($pattern, $fbp)) {
// Log the invalid cookie for audit
$logFile = __DIR__ . '/x_fb_invalid_fbp.txt';
$now = gmdate('Y-m-d H:i:s');
file_put_contents($logFile, "[$now] Deleted invalid fbp: {$fbp}\n", FILE_APPEND | LOCK_EX);
// Delete invalid cookie
setcookie('_fbp', '', [
'expires' => time() - 3600,
'path' => '/',
'secure' => true,
'httponly' => false,
'samesite' => 'Lax'
]);
unset($_COOKIE['_fbp']);
}
}
/**
* TEMPORARY FIX: Delete invalid _fbc cookies (old 10-digit timestamp)
* Author: Fazle Rabbi (Spider eCommerce)
* Duration: 1 year (remove after 2026-11-11)
*/
if (isset($_COOKIE['_fbc'])) {
$fbc = $_COOKIE['_fbc'];
// Example of valid format: fb.1.1731308324000.ABCD1234567890XYZ
// fb.1.<13-digit timestamp>.<fbclid>
$pattern_valid = '/^fb\.1\.\d{13}\.[A-Za-z0-9_-]+$/';
$pattern_invalid = '/^fb\.1\.\d{10}\.[A-Za-z0-9_-]+$/'; // 10-digit timestamp → invalid
if (preg_match($pattern_invalid, $fbc) || !preg_match($pattern_valid, $fbc)) {
// Log the invalid cookie
$logFile = __DIR__ . '/x_fb_invalid_fbc.txt';
$now = gmdate('Y-m-d H:i:s');
file_put_contents($logFile, "[$now] Deleted invalid fbc: {$fbc}\n", FILE_APPEND | LOCK_EX);
// Delete invalid cookie
setcookie('_fbc', '', [
'expires' => time() - 3600,
'path' => '/',
'secure' => true,
'httponly' => false,
'samesite' => 'Lax'
]);
unset($_COOKIE['_fbc']);
}
}