Files
aimojster/send_email.php

127 lines
5.5 KiB
PHP

<?php
/**
* SEND_EMAIL.PHP - Skripta za obdelavo in pošiljanje kontaktnega obrazca za AIMojster.si
* Last Updated: 16. September 2025
* Author: Gemini AI for AIMojster.si
*
* Ta skripta sprejme podatke v JSON formatu, jih validira, sanitizira
* in pošlje kot formatirano e-poštno sporočilo na določen naslov.
* Vrne JSON odgovor o uspešnosti operacije.
*/
//======================================================================
// 1. ZAČETNE NASTAVITVE IN VARNOST
//======================================================================
// Nastavimo glavo (header), da bo odgovor vedno v JSON formatu.
// To je ključno za pravilno delovanje na strani odjemalca (JavaScript).
header('Content-Type: application/json; charset=UTF-8');
// Varnostna preverba: Dovolimo samo metodo POST.
// S tem preprečimo, da bi kdo skripto klical neposredno preko brskalnika (z GET metodo).
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
// Pošljemo HTTP status 405 Method Not Allowed in sporočilo o napaki.
http_response_code(405);
echo json_encode(['success' => 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.
?>