setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); return $pdo; } catch (PDOException $e) { error_log("Client DB Connection Error: " . $e->getMessage()); die("Database connection failed. Please contact support."); } } // Alias for survey URL management files function getShopDBConnection() { return getClientDBConnection(); } // Check if client is logged in function isClientLoggedIn() { return isset($_SESSION['client_id']) && isset($_SESSION['client_email']) && !empty($_SESSION['client_id']); } // Require client login function requireClientLogin() { if (!isClientLoggedIn()) { header('Location: /clients/client-login.php'); exit; } } // Client login function function clientLogin($email, $password) { try { $pdo = getClientDBConnection(); // Get client by email $stmt = $pdo->prepare(" SELECT id, client_code, company_name, contact_person, email, password, account_status FROM clients WHERE LOWER(email) = LOWER(?) AND password IS NOT NULL AND password != '' "); $stmt->execute([$email]); $client = $stmt->fetch(); if (!$client) { return [ 'success' => false, 'message' => 'Invalid email or password. Please check your credentials.' ]; } // Verify password if (!password_verify($password, $client['password'])) { return [ 'success' => false, 'message' => 'Invalid email or password. Please check your credentials.' ]; } // Check account status if ($client['account_status'] !== 'Active') { return [ 'success' => false, 'message' => 'Your account is not active. Please contact support.' ]; } // Set session variables $_SESSION['client_id'] = $client['id']; $_SESSION['client_code'] = $client['client_code']; $_SESSION['client_email'] = $client['email']; $_SESSION['client_name'] = $client['company_name']; $_SESSION['contact_person'] = $client['contact_person']; return [ 'success' => true, 'message' => 'Login successful!' ]; } catch (Exception $e) { error_log("Client login error: " . $e->getMessage()); return [ 'success' => false, 'message' => 'An error occurred. Please try again.' ]; } } // Client logout function function clientLogout() { // Clear all session variables $_SESSION = array(); // Destroy the session cookie if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 3600, '/'); } // Destroy the session session_destroy(); } // Get current client ID function getCurrentClientId() { return $_SESSION['client_id'] ?? null; } // Get current client email function getCurrentClientEmail() { return $_SESSION['client_email'] ?? null; } ?>