false, 'error' => 'Napačna metoda zahteve. Dovoljena je samo metoda POST.']); exit; // Takoj prekinemo izvajanje skripte. } //====================================================================== // 2. SPREJEM IN DEKODIRANJE PODATKOV //====================================================================== // Preberemo необdelane podatke iz telesa zahteve (request body). // To je potrebno, ker JavaScript pošilja podatke kot JSON, ne kot klasičen form-data. $json_payload = file_get_contents('php://input'); // Dekodiramo JSON niz v PHP asociativno polje. // Drugi parameter `true` zagotovi, da dobimo polje namesto objekta. $data = json_decode($json_payload, true); // Preverimo, ali je prišlo do napake pri dekodiranju JSON-a. if (json_last_error() !== JSON_ERROR_NONE) { http_response_code(400); // Bad Request echo json_encode(['success' => false, 'error' => 'Neveljaven JSON format podatkov.']); exit; } //====================================================================== // 3. VALIDACIJA PREJETIH PODATKOV //====================================================================== // Definiramo obvezna polja. $required_fields = ['name', 'email', 'message', 'package']; $errors = []; foreach ($required_fields as $field) { if (empty($data[$field])) { $errors[] = "Polje '{$field}' je obvezno."; } } // Posebej preverimo veljavnost e-poštnega naslova. if (!empty($data['email']) && !filter_var($data['email'], FILTER_VALIDATE_EMAIL)) { $errors[] = "Vneseni e-poštni naslov ni v veljavni obliki."; } // Če so se pojavile napake pri validaciji, jih vrnemo odjemalcu. if (!empty($errors)) { http_response_code(400); // Bad Request echo json_encode(['success' => false, 'error' => implode(' ', $errors)]); exit; } //====================================================================== // 4. SANITIZACIJA PODATKOV IN PRIPRAVA SPREMENLJIVK //====================================================================== // Sanitiziramo vse prejete podatke, da preprečimo XSS napade in druge zlorabe. // Uporabimo htmlspecialchars za kodiranje posebnih znakov in trim za odstranitev presledkov. $name = htmlspecialchars(trim($data['name'])); $email = filter_var(trim($data['email']), FILTER_SANITIZE_EMAIL); $phone = isset($data['phone']) ? htmlspecialchars(trim($data['phone'])) : 'Ni vneseno'; $package = htmlspecialchars(trim($data['package'])); $message = htmlspecialchars(trim($data['message'])); //====================================================================== // 5. SESTAVLJANJE IN POŠILJANJE E-POŠTNEGA SPOROČILA //====================================================================== // --- Nastavitve E-pošte --- $to_email = 'info@aimojster.si'; // **POMEMBNO: Vnesite vaš pravi e-poštni naslov!** $subject = 'Novo povpraševanje s spletne strani AIMojster.si'; // --- Telo sporočila (Email Body) --- // Uporabimo jasne oznake za preglednost. $email_body = "Prejeli ste novo povpraševanje preko kontaktnega obrazca na spletni strani AIMojster.si.\n\n"; $email_body .= "--------------------------------------------------\n"; $email_body .= "Ime in priimek: " . $name . "\n"; $email_body .= "E-poštni naslov: " . $email . "\n"; $email_body .= "Telefonska številka: " . $phone . "\n"; $email_body .= "Izbrani paket: " . $package . "\n\n"; $email_body .= "Sporočilo:\n" . $message . "\n"; $email_body .= "--------------------------------------------------\n"; $email_body .= "To sporočilo je bilo poslano samodejno."; // --- Glave sporočila (Email Headers) --- // Pravilno nastavljene glave so ključne za zanesljivo dostavo in preprečevanje, da bi sporočilo končalo v vsiljeni pošti. $headers = "From: no-reply@aimojster.si\r\n"; // Uporabite naslov z vaše domene. $headers .= "Reply-To: " . $email . "\r\n"; // To vam omogoča, da direktno odgovorite pošiljatelju. $headers .= "Content-Type: text/plain; charset=UTF-8\r\n"; $headers .= "X-Mailer: PHP/" . phpversion(); // --- Pošiljanje --- // Uporabimo PHP funkcijo mail(). Če je pošiljanje uspešno, vrne true. if (mail($to_email, $subject, $email_body, $headers)) { // Pošiljanje je uspelo, vrnemo pozitiven odgovor. echo json_encode(['success' => true]); } else { // Pošiljanje ni uspelo. Vrnemo napako. http_response_code(500); // Internal Server Error echo json_encode(['success' => false, 'error' => 'Napaka strežnika pri pošiljanju sporočila. Prosimo, poskusite kasneje.']); } exit; // Zaključimo izvajanje skripte. ?>