Samstag, 28 Februar 2026

Diese Woche am beliebtesten

Vertiefendes Material

Fähren Verfügbarkeits Checker

Stell dir vor, du rufst seit Wochen mehrmals täglich eine Fährseite auf. Du prüfst immer wieder dieselben Seiten und jedes Mal heisst es „nur Personen“ und kein Auto dazubuchbar, das kostet Nerven. Genau hier setzt dieses kleine Dreamcodes Script an.

Der Fähren Verfügbarkeits Checker übernimmt das monotone Nachsehen automatisch. Statt selbst ständig auf faehre.de nachzuschauen, wird die gewünschte Verbindung regelmäßig im Hintergrund geprüft. Sobald sich der Status einer Abfahrt ändert und Fahrzeuge buchbar werden (also von „nur Personen“ auf „Auswählen“ wechselt), bekommst du sofort eine Benachrichtigung per E-Mail.

Über ein simples Webformular lassen sich Datum, gewünschte Abfahrtszeiten und die E-Mail-Adresse festlegen. Das Script merkt sich den letzten bekannten Status und meldet sich nur dann, wenn sich wirklich etwas ändert. Keine Dauer Mails, kein Spam, nur dann, wenn es relevant wird.

Das Script bucht nichts, greift nicht in den Buchungsprozess ein und loggt sich nirgends ein. Es beobachtet lediglich öffentlich sichtbare Informationen, im Grunde genau das, was man sonst manuell mehrmals am Tag machen würde, nur automatisiert und deutlich entspannter.

Gedacht ist das Ganze als kleine Hilfe für Menschen, die ihre Zeit lieber in den Urlaub investieren möchten als in das ständige Neuladen einer Suchseite für Fähren.

Es sind nur diese drei Schritte nötig:

Cronjon anlegen, damit das Script automatisch läuft:

*/10 * * * * /usr/bin/php /pfad/zu/checker.php

Ein Formular zum Steuern via Browser:

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Dreamcodes - Fähren.de Verfügbarkeits Checker</title>
<style>
body { font-family: Arial, sans-serif; max-width: 600px; margin: 40px auto; }
label { display: block; margin-top: 15px; }
input, textarea, button { width: 100%; padding: 8px; }
button { margin-top: 20px; }
</style>
</head>
<body>
<h2>Fähre automatisch überwachen</h2>
<form method="post" action="checker.php">
<label>Abfahrtsdatum</label>
<input type="date" name="date" required>
<label>Abfahrtszeiten (eine pro Zeile, zB. 08:00)</label>
<textarea name="times" rows="4" required></textarea>
<label>E-Mail für Benachrichtigung</label>
<input type="email" name="email" required>
<button type="submit">Überwachung starten</button>
</form>
<p style="font-size: 0.9em; color: #666;">
Das Script prüft regelmäßig und meldet sich nur, wenn Fahrzeuge buchbar werden.
</p>
</body>
</html>

Checker.php – auf faehre.de zugeschnitten:

<?php
$date   = $_POST['date'];
$times  = array_filter(array_map('trim', explode("\n", $_POST['times'])));
$email  = $_POST['email'];

if (!$date || !$times || !$email) {
    die('Fehlende Angaben.');
}
$cacheDir = __DIR__ . '/cache';
@mkdir($cacheDir);
$cacheFile = $cacheDir . '/' . md5($email . $date) . '.json';
function buildSearchUrl($date) {
    return 'https://www.faehre.de/suchergebnis?datum=' . urlencode($date);
}
function fetch($url) {
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_USERAGENT => 'Mozilla/5.0',
        CURLOPT_TIMEOUT => 20,
    ]);
    $html = curl_exec($ch);
    curl_close($ch);
    return $html ?: '';
}
function checkTimeStatus($html, $time) {
    $pos = strpos($html, $time);
    if ($pos === false) {
        return 'nicht_gefunden';
    }
    $snippet = substr($html, $pos, 1500);
    if (stripos($snippet, 'Auswählen') !== false) {
        return 'verfügbar';
    }
    if (stripos($snippet, 'nur Personen') !== false) {
        return 'nur_personen';
    }
    return 'unbekannt';
}
$html = fetch(buildSearchUrl($date));
$current = [];
foreach ($times as $time) {
    $current[$time] = checkTimeStatus($html, $time);
}
$old = file_exists($cacheFile)
    ? json_decode(file_get_contents($cacheFile), true)
    : [];
$availableNow = [];
foreach ($current as $time => $status) {
    if (($old[$time] ?? null) !== $status && $status === 'verfügbar') {
        $availableNow[] = $time;
    }
}
if ($availableNow) {
    $subject = 'Fähre jetzt mit Fahrzeug buchbar';
    $msg  = "Gute Nachrichten!\n\n";
    $msg .= "Am $date sind folgende Abfahrten jetzt buchbar:\n\n";
    foreach ($availableNow as $t) {
        $msg .= "- $t Uhr\n";
    }
    $msg .= "\nDirekt prüfen: https://www.faehre.de/\n";
    mail($email, $subject, $msg, "From: faehre-check@localhost");
}
file_put_contents($cacheFile, json_encode($current));
echo "Überwachung aktiv. Du wirst per Mail informiert, sobald sich etwas ändert.";
Dreamcodes Redaktion
Dreamcodes Redaktion
Qualität als Standard. Verantwortung als Prinzip. Jede Ressource auf Dreamcodes basiert auf geprüften Best Practices und fundierter Praxiserfahrung. Unser Anspruch ist ein belastbares Fundament statt experimenteller Lösungen. Die Integration und Absicherung der Inhalte liegt in Ihrem Ermessen. Wir liefern die fachliche Basis, die Verantwortung für den produktiven Einsatz verbleibt bei Ihnen.
Vorheriges Tutorial
Nächstes Tutorial

Vielleicht einen Blick WERT?