137 lines
4.5 KiB
PHP
137 lines
4.5 KiB
PHP
<?php
|
|
// === KORAK 0: NASTAVITVE ZA PRODUKCIJO ===
|
|
|
|
// V produkciji izklopimo prikazovanje napak uporabniku.
|
|
// Napake se bodo še vedno beležile v strežniškem dnevniku (error log), če je pravilno nastavljen.
|
|
ini_set('display_errors', 0);
|
|
ini_set('display_startup_errors', 0);
|
|
error_reporting(E_ALL);
|
|
|
|
// Uvozimo potrebne PHPMailer razrede v globalni imenski prostor.
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|
use PHPMailer\PHPMailer\SMTP;
|
|
use PHPMailer\PHPMailer\Exception;
|
|
|
|
// Vključimo datoteke knjižnice PHPMailer.
|
|
require __DIR__ . '/phpmailer/src/Exception.php';
|
|
require __DIR__ . '/phpmailer/src/PHPMailer.php';
|
|
require __DIR__ . '/phpmailer/src/SMTP.php';
|
|
|
|
// Vključimo našo varno konfiguracijsko datoteko.
|
|
require __DIR__ . '/config.php';
|
|
|
|
// Nastavimo glavo (header) odgovora, da bo brskalnik vedel, da pričakuje JSON.
|
|
header('Content-Type: application/json');
|
|
|
|
// Pripravimo privzet odgovor.
|
|
$response = ['success' => false, 'message' => 'Neznana napaka. Prosimo, kontaktirajte administratorja.'];
|
|
|
|
// === KORAK 1: PREVERJANJE METODE ZAHTEVE ===
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
http_response_code(405); // Method Not Allowed
|
|
$response['message'] = 'Nedovoljen dostop. Uporabite metodo POST.';
|
|
echo json_encode($response);
|
|
exit;
|
|
}
|
|
|
|
// === KORAK 2: BRANJE IN VALIDACIJA VSEBINE ===
|
|
|
|
$json_data = file_get_contents('php://input');
|
|
$data = json_decode($json_data, true);
|
|
|
|
if (!$data || !isset($data['name']) || !isset($data['email']) || !isset($data['message'])) {
|
|
http_response_code(400); // Bad Request
|
|
$response['message'] = 'Manjkajoči podatki. Prosimo, izpolnite vsa polja.';
|
|
echo json_encode($response);
|
|
exit;
|
|
}
|
|
|
|
// === KORAK 3: ČIŠČENJE IN VALIDACIJA PODATKOV ===
|
|
|
|
$name = trim($data['name']);
|
|
$email = trim($data['email']);
|
|
$message = trim($data['message']);
|
|
|
|
if (empty($name)) {
|
|
$response['message'] = 'Prosimo, vnesite vaše ime in priimek.';
|
|
echo json_encode($response);
|
|
exit;
|
|
}
|
|
|
|
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
$response['message'] = 'Prosimo, vnesite veljaven e-poštni naslov.';
|
|
echo json_encode($response);
|
|
exit;
|
|
}
|
|
|
|
if (empty($message)) {
|
|
$response['message'] = 'Prosimo, vnesite vaše sporočilo.';
|
|
echo json_encode($response);
|
|
exit;
|
|
}
|
|
|
|
// === KORAK 4: INICIALIZACIJA IN KONFIGURACIJA PHPMAILER ===
|
|
|
|
$mail = new PHPMailer(true);
|
|
|
|
try {
|
|
// --- Nastavitve strežnika ---
|
|
|
|
// !!! POMEMBNO: Način za razhroščevanje je sedaj IZKLOPLJEN !!!
|
|
// S tem zagotovimo, da skripta vrne samo čist JSON odgovor.
|
|
$mail->SMTPDebug = SMTP::DEBUG_OFF;
|
|
|
|
$mail->isSMTP();
|
|
$mail->Host = SMTP_HOST;
|
|
$mail->SMTPAuth = true;
|
|
$mail->Username = SMTP_USERNAME;
|
|
$mail->Password = SMTP_PASSWORD;
|
|
$mail->SMTPSecure = SMTP_SECURE;
|
|
$mail->Port = SMTP_PORT;
|
|
|
|
$mail->CharSet = 'UTF-8';
|
|
|
|
// --- Prejemniki ---
|
|
$mail->setFrom(SMTP_USERNAME, $name);
|
|
$mail->addAddress(SMTP_USERNAME, 'Hermina Merc - Spletna Stran');
|
|
$mail->addReplyTo($email, $name);
|
|
|
|
// --- Vsebina e-sporočila ---
|
|
$mail->isHTML(false);
|
|
$mail->Subject = 'Novo sporočilo s spletne strani herminamerc.si od: ' . $name;
|
|
|
|
$bodyName = htmlspecialchars($name);
|
|
$bodyEmail = htmlspecialchars($email);
|
|
$bodyMessage = htmlspecialchars($message);
|
|
|
|
$mail->Body = "Prejeli ste novo sporočilo preko kontaktnega obrazca.\n\n" .
|
|
"==================================================\n" .
|
|
"Ime in priimek: " . $bodyName . "\n" .
|
|
"E-mail naslov: " . $bodyEmail . "\n" .
|
|
"==================================================\n\n" .
|
|
"Sporočilo:\n" .
|
|
"--------------------------------------------------\n" .
|
|
$bodyMessage . "\n" .
|
|
"--------------------------------------------------\n";
|
|
|
|
// === KORAK 5: POŠILJANJE E-SPOROČILA ===
|
|
$mail->send();
|
|
|
|
$response['success'] = true;
|
|
$response['message'] = 'Hvala za vaše sporočilo! Odgovorili vam bomo v najkrajšem možnem času.';
|
|
|
|
} catch (Exception $e) {
|
|
http_response_code(500); // Internal Server Error
|
|
$response['success'] = false;
|
|
// V produkciji ne izpisujemo podrobne napake uporabniku, ampak jo zabeležimo.
|
|
$response['message'] = 'Sporočila ni bilo mogoče poslati. Prosimo, poskusite znova kasneje ali kontaktirajte administratorja.';
|
|
|
|
// Zabeležimo dejansko napako v strežniški log.
|
|
error_log("PHPMailer napaka: " . $mail->ErrorInfo);
|
|
}
|
|
|
|
// === KORAK 6: POŠILJANJE ODGOVORA ===
|
|
echo json_encode($response);
|
|
|
|
?>
|