All checks were successful
Deploy Feature Branch to Test / deploy (push) Successful in 24s
Fix #34: E-Mail-Versand via PHP - PHP POST handler with server-side validation (name, email, message) - mail() with From/Reply-To set to form email address - Recipient: mki@kies-media.de - Honeypot spam protection (hidden field) - Minimum submit time check (3 seconds) - Session-based rate limiting (60s between submissions) - Header injection protection - Error messages displayed above form - Success message after successful send - Form values preserved on validation errors - Removed client-side mailto: JavaScript logic - Added CSS for error display and honeypot hiding
738 lines
28 KiB
PHP
738 lines
28 KiB
PHP
<?php
|
||
session_start();
|
||
|
||
// --- Helper functions ---
|
||
function normalizeContactValue(string $value): string
|
||
{
|
||
return trim($value);
|
||
}
|
||
|
||
function escapeContactValue(string $value): string
|
||
{
|
||
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
|
||
}
|
||
|
||
function containsHeaderInjection(string $value): bool
|
||
{
|
||
return (bool) preg_match('/[\r\n]/', $value);
|
||
}
|
||
|
||
// --- Form processing ---
|
||
$formErrors = [];
|
||
$formSuccess = false;
|
||
$formData = ['fname' => '', 'lname' => '', 'email' => '', 'phone' => '', 'interest' => 'Besichtigung anfragen', 'message' => ''];
|
||
|
||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||
// Collect and normalize input
|
||
$formData['fname'] = normalizeContactValue((string) ($_POST['fname'] ?? ''));
|
||
$formData['lname'] = normalizeContactValue((string) ($_POST['lname'] ?? ''));
|
||
$formData['email'] = normalizeContactValue((string) ($_POST['email'] ?? ''));
|
||
$formData['phone'] = normalizeContactValue((string) ($_POST['phone'] ?? ''));
|
||
$formData['interest'] = normalizeContactValue((string) ($_POST['interest'] ?? ''));
|
||
$formData['message'] = normalizeContactValue((string) ($_POST['message'] ?? ''));
|
||
|
||
// Honeypot check – hidden field must be empty
|
||
$honeypot = normalizeContactValue((string) ($_POST['website'] ?? ''));
|
||
if ($honeypot !== '') {
|
||
// Bot detected – pretend success
|
||
$formSuccess = true;
|
||
$formData = ['fname' => '', 'lname' => '', 'email' => '', 'phone' => '', 'interest' => 'Besichtigung anfragen', 'message' => ''];
|
||
} else {
|
||
// Server-side validation
|
||
if ($formData['fname'] === '') {
|
||
$formErrors[] = 'Bitte geben Sie Ihren Vornamen an.';
|
||
}
|
||
if ($formData['lname'] === '') {
|
||
$formErrors[] = 'Bitte geben Sie Ihren Nachnamen an.';
|
||
}
|
||
if ($formData['email'] === '' || !filter_var($formData['email'], FILTER_VALIDATE_EMAIL)) {
|
||
$formErrors[] = 'Bitte geben Sie eine gültige E-Mail-Adresse an.';
|
||
}
|
||
if ($formData['message'] === '') {
|
||
$formErrors[] = 'Bitte geben Sie eine Nachricht ein.';
|
||
}
|
||
|
||
// Header injection check
|
||
if (containsHeaderInjection($formData['email']) || containsHeaderInjection($formData['fname'] . ' ' . $formData['lname'])) {
|
||
$formErrors[] = 'Ungültige Zeichen in den Eingabefeldern.';
|
||
}
|
||
|
||
// Minimum time check – form submitted too fast (< 3 seconds)
|
||
$formTime = isset($_POST['form_time']) ? (int) $_POST['form_time'] : 0;
|
||
if ($formTime > 0 && (time() - $formTime) < 3) {
|
||
$formErrors[] = 'Das Formular wurde zu schnell abgeschickt. Bitte versuchen Sie es erneut.';
|
||
}
|
||
|
||
// Session rate limit – max 1 submission per 60 seconds
|
||
$lastSubmit = $_SESSION['last_contact_submit'] ?? 0;
|
||
if ($lastSubmit && (time() - $lastSubmit) < 60) {
|
||
$formErrors[] = 'Bitte warten Sie einen Moment vor der nächsten Anfrage.';
|
||
}
|
||
|
||
// Send email if no errors
|
||
if (empty($formErrors)) {
|
||
$to = 'mki@kies-media.de';
|
||
$subject = 'Kontaktanfrage: ' . $formData['interest'];
|
||
$body = "Von: {$formData['fname']} {$formData['lname']}\n"
|
||
. "E-Mail: {$formData['email']}\n";
|
||
if ($formData['phone'] !== '') {
|
||
$body .= "Telefon: {$formData['phone']}\n";
|
||
}
|
||
$body .= "Anliegen: {$formData['interest']}\n\n"
|
||
. $formData['message'];
|
||
|
||
$headers = "From: {$formData['email']}\r\n";
|
||
$headers .= "Reply-To: {$formData['email']}\r\n";
|
||
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
|
||
$headers .= "X-Mailer: PHP/" . phpversion();
|
||
|
||
$mailSent = mail($to, $subject, $body, $headers);
|
||
|
||
if ($mailSent) {
|
||
$formSuccess = true;
|
||
$_SESSION['last_contact_submit'] = time();
|
||
$formData = ['fname' => '', 'lname' => '', 'email' => '', 'phone' => '', 'interest' => 'Besichtigung anfragen', 'message' => ''];
|
||
} else {
|
||
$formErrors[] = 'Leider konnte die E-Mail nicht gesendet werden. Bitte versuchen Sie es später erneut oder schreiben Sie uns direkt an mki@kies-media.de.';
|
||
}
|
||
}
|
||
}
|
||
}
|
||
?>
|
||
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Einfamilienhaus mieten Schleusingen | 227 m², 6 Zimmer | 1.300 € Kaltmiete</title>
|
||
<meta name="description" content="Einfamilienhaus zur Langzeitmiete in Schleusingen: 227 m² Wohnfläche, 6 Zimmer, 3 Etagen mit Dachterrasse. Kaltmiete 1.300 €. Bahnhofstraße 10, 98553 Schleusingen. Ab sofort verfügbar." />
|
||
<link rel="canonical" href="https://haus-schleusingen.de/haus-schleusingen.html" />
|
||
|
||
<!-- Open Graph -->
|
||
<meta property="og:type" content="website" />
|
||
<meta property="og:title" content="Einfamilienhaus zur Miete in Schleusingen – 227 m², 6 Zimmer" />
|
||
<meta property="og:description" content="Großzügiges Einfamilienhaus zur Langzeitmiete: 227 m², 6 Zimmer, 3 Etagen + Dachterrasse. Kaltmiete 1.300 €. Ab sofort verfügbar in Schleusingen." />
|
||
<meta property="og:image" content="https://haus-schleusingen.de/bilder/Außenansicht-2.png" />
|
||
<meta property="og:url" content="https://haus-schleusingen.de/haus-schleusingen.html" />
|
||
<meta property="og:locale" content="de_DE" />
|
||
<meta property="og:site_name" content="Haus Schleusingen" />
|
||
|
||
<!-- Schema.org Structured Data -->
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "RealEstateListing",
|
||
"name": "Einfamilienhaus zur Miete in Schleusingen",
|
||
"description": "Großzügiges Einfamilienhaus zur Langzeitmiete: 227 m² Wohnfläche, 6 Zimmer, 3 Etagen mit Dachterrasse. Kaltmiete 1.300 €.",
|
||
"url": "https://haus-schleusingen.de/haus-schleusingen.html",
|
||
"image": "https://haus-schleusingen.de/bilder/Außenansicht-2.png",
|
||
"datePosted": "2026-05-14",
|
||
"address": {
|
||
"@type": "PostalAddress",
|
||
"streetAddress": "Bahnhofstraße 10",
|
||
"addressLocality": "Schleusingen",
|
||
"postalCode": "98553",
|
||
"addressCountry": "DE"
|
||
},
|
||
"offers": {
|
||
"@type": "Offer",
|
||
"price": "1300",
|
||
"priceCurrency": "EUR",
|
||
"priceSpecification": {
|
||
"@type": "UnitPriceSpecification",
|
||
"price": "1300",
|
||
"priceCurrency": "EUR",
|
||
"unitCode": "MON",
|
||
"description": "Kaltmiete pro Monat"
|
||
}
|
||
},
|
||
"floorSize": {
|
||
"@type": "QuantitativeValue",
|
||
"value": "227",
|
||
"unitCode": "MTK"
|
||
},
|
||
"numberOfRooms": {
|
||
"@type": "QuantitativeValue",
|
||
"value": "6"
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<link rel="stylesheet" href="fonts/fonts.css" />
|
||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||
<link rel="stylesheet" href="css/haus-schleusingen.css" />
|
||
</head>
|
||
<body>
|
||
<nav id="navbar">
|
||
<div class="nav-logo">Bahnhofstraße 10</div>
|
||
<button class="nav-hamburger" aria-label="Navigation öffnen" aria-expanded="false">
|
||
<span></span>
|
||
</button>
|
||
<ul class="nav-links">
|
||
<li><a href="#galerie">Galerie</a></li>
|
||
<li><a href="#grundriss">Grundriss</a></li>
|
||
<li><a href="#miete">Miete</a></li>
|
||
<li><a href="#lage">Lage</a></li>
|
||
</ul>
|
||
<button
|
||
class="nav-cta"
|
||
onclick="$('html').animate({ scrollTop: $('#kontakt').offset().top }, 700)"
|
||
>
|
||
Jetzt anfragen
|
||
</button>
|
||
</nav>
|
||
<div class="nav-mobile-overlay" aria-hidden="true"></div>
|
||
|
||
<section class="hero" id="hero">
|
||
<div
|
||
class="hero-bg"
|
||
id="heroBg"
|
||
style="background-image: url(bilder/Außenansicht-2.png)"
|
||
></div>
|
||
<div class="hero-overlay"></div>
|
||
<div class="hero-content" id="heroContent">
|
||
<div class="hero-tag">Zur Langzeitmiete · Ab sofort verfügbar</div>
|
||
<h1>
|
||
Großzügiges
|
||
<br />
|
||
<em>Einfamilienhaus</em>
|
||
<br />
|
||
in Schleusingen
|
||
</h1>
|
||
<div class="hero-meta">
|
||
<span><strong>Schleusinger Bahnhofstraße 10</strong></span>
|
||
<span>227 m² Wohnfläche</span>
|
||
<span>6 Zimmer</span>
|
||
<span>3 Etagen + Dachterrasse</span>
|
||
</div>
|
||
</div>
|
||
<div class="hero-scroll">
|
||
<span>Entdecken</span>
|
||
<div class="scroll-line"></div>
|
||
</div>
|
||
</section>
|
||
|
||
<div class="facts-strip">
|
||
<div class="fact">
|
||
<div class="fact-val">227</div>
|
||
<div class="fact-label">m² Wohnfläche</div>
|
||
</div>
|
||
<div class="fact">
|
||
<div class="fact-val">6</div>
|
||
<div class="fact-label">Zimmer</div>
|
||
</div>
|
||
<div class="fact">
|
||
<div class="fact-val">3</div>
|
||
<div class="fact-label">Etagen</div>
|
||
</div>
|
||
<div class="fact">
|
||
<div class="fact-val">1.300</div>
|
||
<div class="fact-label">€ Kaltmiete</div>
|
||
</div>
|
||
</div>
|
||
|
||
<section class="intro" id="intro">
|
||
<div class="intro-text" data-animate>
|
||
<div class="section-eyebrow">Das Objekt</div>
|
||
<h2>Wohnen mit Charakter und viel Raum</h2>
|
||
<p>
|
||
Vermietet wird ein vollständiges Einfamilienhaus in ruhiger Lage von Schleusingen. Das
|
||
Haus verbindet historischen Charme mit modernem Wohnkomfort auf drei großzügigen Etagen.
|
||
</p>
|
||
<p>
|
||
Garage für zwei Fahrzeuge, großzügige Dachterrasse mit 35,8 m², vollausgestattete Küche,
|
||
Vollbad sowie Abstell- und Nutzräume machen das Haus zu einem außergewöhnlichen
|
||
Mietobjekt.
|
||
</p>
|
||
<div class="intro-stats">
|
||
<div>
|
||
<div class="istat-val">154,9 m²</div>
|
||
<div class="istat-label">Nutzfläche</div>
|
||
</div>
|
||
<div>
|
||
<div class="istat-val">35,8 m²</div>
|
||
<div class="istat-label">Dachterrasse</div>
|
||
</div>
|
||
<div>
|
||
<div class="istat-val">2 Stpl.</div>
|
||
<div class="istat-label">Garage</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="intro-img" data-animate>
|
||
<img src="bilder/wohnzimmer2.png" alt="Wohnzimmer" />
|
||
<div class="intro-img-badge">Wohnzimmer · 42,6 m²</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="galerie" class="gallery-section">
|
||
<div class="gallery-header">
|
||
<div>
|
||
<div class="section-eyebrow">Fotogalerie</div>
|
||
<h2>Einblicke ins Haus</h2>
|
||
</div>
|
||
</div>
|
||
<div class="masonry-grid">
|
||
<div class="grid-sizer"></div>
|
||
|
||
<div class="grid-item" data-img="bilder/Außenansicht-2.png">
|
||
<img src="bilder/Außenansicht-2-small.png" alt="Außenansicht" />
|
||
<span class="grid-item-label">Außenansicht</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/wohnzimmer2.png">
|
||
<img src="bilder/wohnzimmer2-small.png" alt="Wohnzimmer" />
|
||
<span class="grid-item-label">Wohnzimmer · 42,6 m²</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/Küche 1.jpg">
|
||
<img src="bilder/Küche 1.jpg" alt="Küche" />
|
||
<span class="grid-item-label">Küche · 18,4 m²</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/schlafzimmer.png">
|
||
<img src="bilder/schlafzimmer-small.png" alt="Schlafzimmer" />
|
||
<span class="grid-item-label">Schlafzimmer · 18 m²</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/Bad.jpg">
|
||
<img src="bilder/Bad.jpg" alt="Badezimmer" />
|
||
<span class="grid-item-label">Badezimmer · 9,8 m²</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/Kinderzimmer.png">
|
||
<img src="bilder/Kinderzimmer-small.png" alt="Kinderzimmer 1" />
|
||
<span class="grid-item-label">Kinderzimmer 1 · 21,7 m²</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/Kinderzimmer 2.jpg">
|
||
<img src="bilder/Kinderzimmer 2-small.png" alt="Kinderzimmer 2" />
|
||
<span class="grid-item-label">Kinderzimmer 2 · 15,7 m²</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/kinderzimmer 2 2.jpeg">
|
||
<img src="bilder/kinderzimmer 2 2-small.png" alt="Kinderzimmer Detail" />
|
||
<span class="grid-item-label">Kinderzimmer Detail</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/Kinderzimmer 3.jpg">
|
||
<img src="bilder/Kinderzimmer 3-small.png" alt="Kinderzimmer 3" />
|
||
<span class="grid-item-label">Gästezimmer · 11,5 m²</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/Bad-2.jpg">
|
||
<img src="bilder/Bad-2-small.jpg" alt="Wohnbereich Detail 1" />
|
||
<span class="grid-item-label">Wohnbereich</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/bad3.jpg">
|
||
<img src="bilder/Bad-3-small.jpg" alt="Wohnbereich Detail 2" />
|
||
<span class="grid-item-label">Wohnbereich Detail</span>
|
||
</div>
|
||
<div class="grid-item" data-img="bilder/WhatsApp Image 2026-03-30 at 07.50.42 (2).jpeg">
|
||
<img
|
||
src="bilder/WhatsApp Image 2026-03-30 at 07.50.42 (2).jpeg"
|
||
alt="Wohnbereich Detail 3"
|
||
/>
|
||
<span class="grid-item-label">Hausansicht</span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="floors-section" id="grundriss">
|
||
<div class="section-eyebrow">Raumaufteilung</div>
|
||
<h2>Großzügig auf allen Etagen</h2>
|
||
<div class="floor-accordion">
|
||
<div class="floor-item">
|
||
<div class="floor-header">
|
||
<span class="floor-title">Erdgeschoss</span>
|
||
<div class="floor-size">
|
||
<span>99,5 m²</span>
|
||
<div class="floor-icon">+</div>
|
||
</div>
|
||
</div>
|
||
<div class="floor-body">
|
||
<div class="floor-rooms-grid">
|
||
<div class="room-chip">
|
||
Flur
|
||
<span class="room-chip-area">20,1 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
WC
|
||
<span class="room-chip-area">0,8 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Garage / Partykeller
|
||
<span class="room-chip-area">42,6 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Abstellraum 1
|
||
<span class="room-chip-area">9,9 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Abstellraum 2
|
||
<span class="room-chip-area">7,8 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Heizungskeller
|
||
<span class="room-chip-area">18,3 m²</span>
|
||
</div>
|
||
</div>
|
||
<div class="floor-plan floor-plan-multi">
|
||
<img
|
||
src="bilder/grundrisse/EG-small.jpg"
|
||
alt="Grundriss Erdgeschoss"
|
||
data-img="bilder/grundrisse/EG.png"
|
||
/>
|
||
<img
|
||
src="bilder/grundrisse/EG 3D-small.jpg"
|
||
alt="Grundriss Erdgeschoss"
|
||
data-img="bilder/grundrisse/EG 3D.png"
|
||
/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="floor-item">
|
||
<div class="floor-header">
|
||
<span class="floor-title">1. Obergeschoss</span>
|
||
<div class="floor-size">
|
||
<span>120,4 m²</span>
|
||
<div class="floor-icon">+</div>
|
||
</div>
|
||
</div>
|
||
<div class="floor-body">
|
||
<div class="floor-rooms-grid">
|
||
<div class="room-chip">
|
||
Flur
|
||
<span class="room-chip-area">20,1 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Wohnzimmer
|
||
<span class="room-chip-area">42,6 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Gästezimmer
|
||
<span class="room-chip-area">11,5 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Badezimmer
|
||
<span class="room-chip-area">9,8 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Küche
|
||
<span class="room-chip-area">18,4 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Schlafzimmer
|
||
<span class="room-chip-area">18,0 m²</span>
|
||
</div>
|
||
</div>
|
||
<div class="floor-plan floor-plan-multi">
|
||
<img
|
||
src="bilder/grundrisse/OG 1 2-small.jpg"
|
||
alt="Grundriss 1. Obergeschoss"
|
||
data-img="bilder/grundrisse/OG 1 2.png"
|
||
/>
|
||
<img
|
||
src="bilder/grundrisse/OG 1 3D-small.jpg"
|
||
alt="Grundriss 1. Obergeschoss"
|
||
data-img="bilder/grundrisse/OG 1 3D.png"
|
||
/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="floor-item">
|
||
<div class="floor-header">
|
||
<span class="floor-title">2. Obergeschoss</span>
|
||
<div class="floor-size">
|
||
<span>68 m²</span>
|
||
<div class="floor-icon">+</div>
|
||
</div>
|
||
</div>
|
||
<div class="floor-body">
|
||
<div class="floor-rooms-grid">
|
||
<div class="room-chip">
|
||
Flur
|
||
<span class="room-chip-area">13,9 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Kinderzimmer 1
|
||
<span class="room-chip-area">21,7 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Kinderzimmer 2
|
||
<span class="room-chip-area">15,7 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Spielzimmer
|
||
<span class="room-chip-area">6,3 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Ankleidezimmer
|
||
<span class="room-chip-area">1,4 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Dachterrasse
|
||
<span class="room-chip-area">9,0 m²</span> <small>(25% von 35,8 m²)</small>
|
||
</div>
|
||
</div>
|
||
<div class="floor-plan floor-plan-multi">
|
||
<img
|
||
src="bilder/grundrisse/OG 2 grundriss-small.jpg"
|
||
alt="Grundriss 2. Obergeschoss (1)"
|
||
data-img="bilder/grundrisse/OG 2 grundriss.png"
|
||
/>
|
||
<img
|
||
src="bilder/grundrisse/OG 2 3D-small.jpg"
|
||
alt="Grundriss 2. Obergeschoss (1)"
|
||
data-img="bilder/grundrisse/OG 2 3D.png"
|
||
/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="floor-item">
|
||
<div class="floor-header">
|
||
<span class="floor-title">Dachboden</span>
|
||
<div class="floor-size">
|
||
<span>94 m² Nutzfläche</span>
|
||
<div class="floor-icon">+</div>
|
||
</div>
|
||
</div>
|
||
<div class="floor-body">
|
||
<div class="floor-rooms-grid">
|
||
<div class="room-chip">
|
||
Dachboden unten (ungeheizt)
|
||
<span class="room-chip-area">52 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Dachboden Mitte (ungeheizt)
|
||
<span class="room-chip-area">31 m²</span>
|
||
</div>
|
||
<div class="room-chip">
|
||
Dachboden oben (ungeheizt)
|
||
<span class="room-chip-area">11 m²</span>
|
||
</div>
|
||
</div>
|
||
<div class="floor-plan floor-plan-multi">
|
||
<img
|
||
src="bilder/grundrisse/Dachboden unten 2-small.jpg"
|
||
alt="Grundriss Dachboden"
|
||
data-img="bilder/grundrisse/Dachboden unten 2.png"
|
||
/>
|
||
<img
|
||
src="bilder/grundrisse/Dachboden unten-small.jpg"
|
||
alt="Grundriss Dachboden"
|
||
data-img="bilder/grundrisse/Dachboden unten.png"
|
||
/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="pricing-section" id="miete">
|
||
<div class="pricing-inner">
|
||
<div class="section-eyebrow">Mietkonditionen</div>
|
||
<h2>Transparente Preisgestaltung</h2>
|
||
<div class="price-cards">
|
||
<div class="price-card">
|
||
<div class="pc-label">Kaltmiete</div>
|
||
<div class="pc-val">1.300 €</div>
|
||
<div class="pc-sub">pro Monat</div>
|
||
</div>
|
||
<div class="price-card highlight">
|
||
<div class="pc-label">Gesamtmiete warm</div>
|
||
<div class="pc-val">1.600 €</div>
|
||
<div class="pc-sub">inkl. 300 € Nebenkosten</div>
|
||
</div>
|
||
<div class="price-card">
|
||
<div class="pc-label">Kaution</div>
|
||
<div class="pc-val">2.600 €</div>
|
||
<div class="pc-sub">2 Nettokaltmieten</div>
|
||
</div>
|
||
</div>
|
||
<div class="price-note">
|
||
<div class="pn-item">
|
||
<strong>Verfügbarkeit</strong>
|
||
Ab sofort · unbefristete Laufzeit
|
||
</div>
|
||
<div class="pn-item">
|
||
<strong>Nebenkosten</strong>
|
||
Vorauszahlung 300 €/Monat, jährliche Abrechnung
|
||
</div>
|
||
<div class="pn-item">
|
||
<strong>Energieausweis</strong>
|
||
Wird bei Mietbeginn übergeben · Erdgasheizung
|
||
</div>
|
||
<div class="pn-item">
|
||
<strong>Haustiere</strong>
|
||
Auf Anfrage
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="lage-section" id="lage">
|
||
<div class="section-eyebrow">Standort</div>
|
||
<h2>Zentral und ruhig zugleich</h2>
|
||
<div class="lage-grid">
|
||
<div class="lage-item">
|
||
<div class="lage-icon">🛒</div>
|
||
<div>
|
||
<div class="lage-title">Einkaufen & Versorgung</div>
|
||
<div class="lage-desc">
|
||
Supermärkte, Ärzte, Apotheken und Schulen sind fußläufig erreichbar
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="lage-item">
|
||
<div class="lage-icon">🚌</div>
|
||
<div>
|
||
<div class="lage-title">Öffentlicher Nahverkehr</div>
|
||
<div class="lage-desc">
|
||
Zentrale Bushaltestelle ca. 200 m entfernt — direkte Verbindungen in die Region
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="lage-item">
|
||
<div class="lage-icon">🏛</div>
|
||
<div>
|
||
<div class="lage-title">Innenstadt Schleusingen</div>
|
||
<div class="lage-desc">Wochenmarkt und Stadtmitte nur ca. 500 m entfernt</div>
|
||
</div>
|
||
</div>
|
||
<div class="lage-item">
|
||
<div class="lage-icon">📍</div>
|
||
<div>
|
||
<div class="lage-title">Genaue Adresse</div>
|
||
<div class="lage-desc">
|
||
Schleusinger Bahnhofstraße 10
|
||
<br />
|
||
98533 Schleusingen, Thüringen
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="lage-map-wrapper">
|
||
<iframe
|
||
src="https://maps.google.com/maps?q=50.5090045,10.7473859&t=&z=16&ie=UTF8&iwloc=&output=embed"
|
||
width="100%"
|
||
height="450"
|
||
style="border: 0"
|
||
allowfullscreen=""
|
||
loading="lazy"
|
||
referrerpolicy="no-referrer-when-downgrade"
|
||
title="Standort Bahnhofstraße 10, Schleusingen"
|
||
></iframe>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="contact-section" id="kontakt">
|
||
<div class="contact-inner">
|
||
<div class="section-eyebrow">Kontakt</div>
|
||
<h2>
|
||
Interesse?
|
||
<br />
|
||
<em>Schreiben Sie uns.</em>
|
||
</h2>
|
||
<p>
|
||
Wir freuen uns über Ihre Anfrage und melden uns innerhalb von 24 Stunden.
|
||
Besichtigungstermine sind nach Absprache möglich. Bitte geben Sie bei Ihrer Anfrage ein
|
||
paar Terminvorschläge an.
|
||
</p>
|
||
<div class="contact-form">
|
||
<?php if ($formSuccess): ?>
|
||
<div class="form-success" style="display: block">
|
||
<p>Vielen Dank für Ihre Anfrage!</p>
|
||
<br />
|
||
<small>Wir haben Ihre Nachricht erhalten und melden uns innerhalb von 24 Stunden bei Ihnen.</small>
|
||
</div>
|
||
<?php else: ?>
|
||
<?php if (!empty($formErrors)): ?>
|
||
<div class="form-errors">
|
||
<ul>
|
||
<?php foreach ($formErrors as $error): ?>
|
||
<li><?= escapeContactValue($error) ?></li>
|
||
<?php endforeach; ?>
|
||
</ul>
|
||
</div>
|
||
<?php endif; ?>
|
||
<form id="contactForm" method="post">
|
||
<div class="form-row">
|
||
<div class="form-field">
|
||
<label for="fname">Vorname</label>
|
||
<input type="text" id="fname" name="fname" placeholder="Max" required value="<?= escapeContactValue($formData['fname']) ?>" />
|
||
</div>
|
||
<div class="form-field">
|
||
<label for="lname">Nachname</label>
|
||
<input type="text" id="lname" name="lname" placeholder="Mustermann" required value="<?= escapeContactValue($formData['lname']) ?>" />
|
||
</div>
|
||
</div>
|
||
<div class="form-row">
|
||
<div class="form-field">
|
||
<label for="email">E-Mail</label>
|
||
<input
|
||
type="email"
|
||
id="email"
|
||
name="email"
|
||
placeholder="max@beispiel.de"
|
||
required
|
||
value="<?= escapeContactValue($formData['email']) ?>"
|
||
/>
|
||
</div>
|
||
<div class="form-field">
|
||
<label for="phone">Telefon</label>
|
||
<input type="tel" id="phone" name="phone" placeholder="+49 ..." value="<?= escapeContactValue($formData['phone']) ?>" />
|
||
</div>
|
||
</div>
|
||
<div class="form-row">
|
||
<div class="form-field full">
|
||
<label for="interest">Anliegen</label>
|
||
<select id="interest" name="interest">
|
||
<?php
|
||
$interestOptions = ['Besichtigung anfragen', 'Allgemeine Informationen', 'Mietbewerbung einreichen'];
|
||
foreach ($interestOptions as $opt):
|
||
$selected = ($formData['interest'] === $opt) ? ' selected' : '';
|
||
?>
|
||
<option<?= $selected ?>><?= escapeContactValue($opt) ?></option>
|
||
<?php endforeach; ?>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="form-row">
|
||
<div class="form-field full">
|
||
<label for="message">Nachricht</label>
|
||
<textarea
|
||
id="message"
|
||
name="message"
|
||
rows="4"
|
||
placeholder="Ihre Nachricht ..."
|
||
required
|
||
><?= escapeContactValue($formData['message']) ?></textarea>
|
||
</div>
|
||
</div>
|
||
<!-- Honeypot: hidden field for spam bots -->
|
||
<div class="hp-field" aria-hidden="true">
|
||
<label for="website">Website</label>
|
||
<input type="text" id="website" name="website" tabindex="-1" autocomplete="off" />
|
||
</div>
|
||
<!-- Form load timestamp for minimum-submit-time check -->
|
||
<input type="hidden" name="form_time" value="<?= time() ?>" />
|
||
<button type="submit" class="btn-submit">Anfrage absenden</button>
|
||
</form>
|
||
<?php endif; ?>
|
||
</div>
|
||
<div class="contact-details">
|
||
<p>Oder schreiben Sie uns direkt: <a href="mailto:mki@kies-media.de">mki@kies-media.de</a></p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<footer>
|
||
<div class="footer-logo">Bahnhofstraße 10 · Schleusingen</div>
|
||
<div class="footer-links">
|
||
<a href="impressum.html">Impressum</a>
|
||
<a href="datenschutz.html">Datenschutz</a>
|
||
</div>
|
||
</footer>
|
||
|
||
<div class="lightbox" id="lightbox">
|
||
<button class="lightbox-close" id="lightboxClose">×</button>
|
||
<img src="" id="lightboxImg" alt="Vollbild" />
|
||
</div>
|
||
|
||
<script src="js/haus-schleusingen.js"></script>
|
||
</body>
|
||
</html>
|