'; } public function captureSnapshot() { $outputFile = 'snapshot_' . date('YmdHis') . '.jpg'; $command = "ffmpeg -i {$this->videoSrc} -i {$this->logoPath} -filter_complex 'overlay=10:10' -vframes 1 -q:v 2 {$outputFile}"; exec($command, $output, $returnVar); if ($returnVar !== 0) { return "Fehler beim Erstellen des Snapshots."; } header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $outputFile . '"'); readfile($outputFile); unlink($outputFile); exit; } public function captureVideoSequence($duration = 10) { $outputFile = 'sequence_' . date('YmdHis') . '.mp4'; $command = "ffmpeg -i {$this->videoSrc} -i {$this->logoPath} -filter_complex 'overlay=10:10' -t {$duration} -c:v libx264 -preset fast -crf 23 {$outputFile}"; exec($command, $output, $returnVar); if ($returnVar !== 0) { return "Fehler beim Erstellen der Video-Sequenz."; } header('Content-Type: video/mp4'); header('Content-Disposition: attachment; filename="' . $outputFile . '"'); readfile($outputFile); unlink($outputFile); exit; } public function getJavaScript() { return " document.addEventListener('DOMContentLoaded', function () { var video = document.getElementById('webcam-player'); var videoSrc = '{$this->videoSrc}'; if (Hls.isSupported()) { var hls = new Hls(); hls.loadSource(videoSrc); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED, function () { video.play(); }); } else if (video.canPlayType('application/vnd.apple.mpegurl')) { video.src = videoSrc; video.addEventListener('loadedmetadata', function () { video.play(); }); } }); "; } public function setVideoSrc($src) { $this->videoSrc = $src; } } class GuestbookManager { private $entries = []; private $dbFile = 'guestbook.json'; public function __construct() { if (file_exists($this->dbFile)) { $this->entries = json_decode(file_get_contents($this->dbFile), true); } } public function handleFormSubmission() { if (isset($_POST['guestbook'], $_POST['guest-name'], $_POST['guest-message'])) { $this->addEntry($_POST['guest-name'], $_POST['guest-message']); $this->saveEntries(); } } private function addEntry($name, $message) { $this->entries[] = [ 'name' => $name, 'message' => $message, 'date' => date('Y-m-d H:i:s') ]; } public function deleteEntry($index) { if (isset($this->entries[$index])) { unset($this->entries[$index]); $this->entries = array_values($this->entries); // Re-index the array $this->saveEntries(); return true; } return false; } private function saveEntries() { file_put_contents($this->dbFile, json_encode($this->entries)); } public function displayForm() { return '
'; } public function displayEntries($isAdmin = false) { $output = '
'; foreach ($this->entries as $index => $entry) { $output .= "

{$entry['name']}

{$entry['message']}

{$entry['date']}"; if ($isAdmin) { $output .= "
"; } $output .= "
"; } $output .= '
'; return $output; } } class ContactManager { public function displayForm() { return '
'; } public function handleSubmission($name, $email, $message) { $feedback = [ 'name' => $name, 'email' => $email, 'message' => $message, 'date' => date('Y-m-d H:i:s') ]; $feedbacks = json_decode(file_get_contents('feedbacks.json') ?: '[]', true); $feedbacks[] = $feedback; file_put_contents('feedbacks.json', json_encode($feedbacks)); } } class AdminManager { public function isAdmin() { return isset($_SESSION['admin']) && $_SESSION['admin'] === true; } public function handleLogin($username, $password) { echo "Login-Versuch: Username = $username, Passwort = $password"; // Debugging if ($username === 'admin' && $password === 'sonne4000') { $_SESSION['admin'] = true; return true; } return false; } public function handleImageUpload($file) { if (!$this->isAdmin()) { return false; // Nur Admins dürfen Bilder hochladen } if (!isset($file['tmp_name']) || empty($file['tmp_name'])) { echo "Keine Datei hochgeladen."; return false; } $target_dir = "uploads/"; if (!file_exists($target_dir)) { mkdir($target_dir, 0777, true); } $target_file = $target_dir . basename($file["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); $check = @getimagesize($file["tmp_name"]); if($check === false) { echo "Die Datei ist kein Bild."; return false; } if ($file["size"] > 5000000) { // 5MB Limit echo "Die Datei ist zu groß."; return false; } // Erlauben Sie nur bestimmte Dateiformate if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Nur JPG, JPEG, PNG & GIF Dateien sind erlaubt."; return false; } // Wenn alles in Ordnung ist, versuchen Sie, die Datei hochzuladen if (move_uploaded_file($file["tmp_name"], $target_file)) { echo "Die Datei ". basename( $file["name"]). " wurde hochgeladen."; return true; } else { echo "Es gab einen Fehler beim Hochladen der Datei."; return false; } } public function displayLoginForm() { return '
'; } public function displayAdminContent() { $feedbacks = json_decode(file_get_contents('feedbacks.json') ?: '[]', true); $output = '

Admin-Bereich

'; foreach ($feedbacks as $feedback) { $output .= "
"; $output .= "

{$feedback['name']} ({$feedback['email']})

"; $output .= "

{$feedback['message']}

"; $output .= "{$feedback['date']}"; $output .= "
"; } $output .= '
'; $output .= '

Social Media Links verwalten

'; $output .= '

Bild hochladen

'; return $output; } public function displayGalleryImages() { $output = ''; $files = glob("uploads/*.*"); foreach($files as $file) { $output .= ''; } return $output; } public function handleSocialMediaUpdate($platform, $url) { $socialLinks = json_decode(file_get_contents('social_links.json') ?: '{}', true); $socialLinks[$platform] = $url; file_put_contents('social_links.json', json_encode($socialLinks)); } } $webcamManager = new WebcamManager(); $guestbookManager = new GuestbookManager(); $contactManager = new ContactManager(); $adminManager = new AdminManager(); if (isset($_GET['action'])) { switch ($_GET['action']) { case 'snapshot': $webcamManager->captureSnapshot(); break; case 'sequence': $webcamManager->captureVideoSequence(); break; } } if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['guestbook'])) { $guestbookManager->handleFormSubmission(); } elseif (isset($_POST['contact'])) { $contactManager->handleSubmission($_POST['name'], $_POST['email'], $_POST['message']); } elseif (isset($_POST['admin-login'])) { $adminManager->handleLogin($_POST['username'], $_POST['password']); } elseif (isset($_POST['update-social-media'])) { $adminManager->handleSocialMediaUpdate($_POST['social-platform'], $_POST['social-url']); if (isset($_POST['delete_entry']) && $adminManager->isAdmin()) { $index = $_POST['delete_entry']; if ($guestbookManager->deleteEntry($index)) { // Optionally set a success message $_SESSION['message'] = "Eintrag erfolgreich gelöscht."; } else { // Optionally set an error message $_SESSION['error'] = "Fehler beim Löschen des Eintrags."; } // Redirect to prevent form resubmission header("Location: " . $_SERVER['PHP_SELF'] . "#guestbook"); exit(); } } elseif (isset($_FILES["fileToUpload"]) && $adminManager->isAdmin()) { $adminManager->handleImageUpload($_FILES["fileToUpload"]); }} ?> <h2>Aurora Wetter Lifecam - Einzigartige Live-Webcam und Wetter></h2>
Tag ein echo '

Unsere Empfehlungen

'; ?>

Willkommen bei Aurora Wetter Lifecam

Erleben Sie faszinierende Ausblicke der Züricher Region - in Echtzeit!

displayWebcam(); ?>

Folge uns und kopiere den Code und sende es deinen Freunden in Tiktok, Facebook, Instagram usw

Klicke auf den QR-Code, um die URL zu kopieren

Gästebuch

{$_SESSION['message']}

"; unset($_SESSION['message']); } if (isset($_SESSION['error'])) { echo "

{$_SESSION['error']}

"; unset($_SESSION['error']); } echo $guestbookManager->displayForm(); echo $guestbookManager->displayEntries($adminManager->isAdmin()); ?>

Kontakt

Haben Sie Fragen, Anregungen oder möchten uns unterstützen? Wir freuen uns auf Ihre Nachricht!

displayForm(); ?>

Über unser Projekt

Aurora Wetter Lifecam ist ein Herzensprojekt von Wetterbegeisterten. Wir möchten Ihnen die Schönheit der Natur und Faszination des Wetters näher bringen.

Dazu betreiben wir seit 2010 rund um die Uhr hochauflösende Webcams. Besonders stolz sind wir auf einzigartige Einblicke, wie z.B. die Trainingsflüge der Patrouille Suisse jeden Montagmorgen.

isAdmin()): ?>

Admin-Bereich

displayAdminContent(); ?>

Admin Login

displayLoginForm(); ?>