Spaces:
Running
Running
| // Database configuration | |
| define('DB_HOST', 'localhost'); | |
| define('DB_USER', 'your_db_username'); | |
| define('DB_PASS', 'your_db_password'); | |
| define('DB_NAME', 'monthly_tombola'); | |
| // Site configuration | |
| define('SITE_NAME', 'Monthly Tombola'); | |
| define('SITE_URL', 'https://yourdomain.com'); | |
| define('ADMIN_EMAIL', 'admin@yourdomain.com'); | |
| // Security settings | |
| define('PEPPER', 'your-random-pepper-string-here'); // For password hashing | |
| define('CSRF_TOKEN_SECRET', 'your-csrf-token-secret-here'); | |
| // Start session | |
| session_start(); | |
| // Create database connection | |
| try { | |
| $db = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS); | |
| $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | |
| $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); | |
| $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); | |
| } catch(PDOException $e) { | |
| die("Database connection failed: " . $e->getMessage()); | |
| } | |
| // Common functions | |
| function sanitizeInput($data) { | |
| return htmlentities(strip_tags(trim($data)), ENT_QUOTES, 'UTF-8'); | |
| } | |
| function redirect($url) { | |
| header("Location: $url"); | |
| exit(); | |
| } | |
| function isLoggedIn() { | |
| return isset($_SESSION['user_id']); | |
| } | |
| function generateCSRFToken() { | |
| if (empty($_SESSION['csrf_token'])) { | |
| $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); | |
| } | |
| return $_SESSION['csrf_token']; | |
| } | |
| function verifyCSRFToken($token) { | |
| return isset($_SESSION['csrf_token']) && hash_equals($_SESSION['csrf_token'], $token); | |
| } | |
| function hashPassword($password) { | |
| return password_hash($password . PEPPER, PASSWORD_BCRYPT); | |
| } | |
| function verifyPassword($password, $hash) { | |
| return password_verify($password . PEPPER, $hash); | |
| } | |
| function generateRandomString($length = 32) { | |
| return bin2hex(random_bytes($length)); | |
| } | |
| function sendEmail($to, $subject, $message) { | |
| $headers = "From: " . ADMIN_EMAIL . "\r\n"; | |
| $headers .= "Reply-To: " . ADMIN_EMAIL . "\r\n"; | |
| $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; | |
| return mail($to, $subject, $message, $headers); | |
| } | |
| // Error handling | |
| set_error_handler(function($errno, $errstr, $errfile, $errline) { | |
| error_log("Error [$errno] $errstr in $errfile on line $errline"); | |
| if (defined('DEBUG') && DEBUG === true) { | |
| echo "<div class='alert alert-danger'>Error: $errstr in $errfile on line $errline</div>"; | |
| } | |
| }); | |
| // Set timezone | |
| date_default_timezone_set('UTC'); | |