52 lines
1.7 KiB
PHP
52 lines
1.7 KiB
PHP
<?php
|
|
|
|
require(dirname(__FILE__) . '/settings.php');
|
|
|
|
$successURL = '/newsletter/unsubscribed.html';
|
|
$errorURL = '/newsletter/unsubscribe-error.html';
|
|
|
|
|
|
function RemoveSubscriberFromDB($subscriberAddress) {
|
|
global $general;
|
|
|
|
try {
|
|
$pdo = getPDO();
|
|
|
|
// make sure record exists
|
|
$query = $pdo->prepare($general['sql']['read_record']);
|
|
if ( ! $query->execute([':e' => $subscriberAddress]) ) {
|
|
error_log("Datenbankfehler: Adresscheck für {$subscriberAddress} ergab einen Fehler.");
|
|
return 'Datenbankfehler.';
|
|
}
|
|
if ( ! $query->fetch() ) {
|
|
error_log("Datenbankfehler: Emailadresse {$subscriberAddress} nicht in Datenbank vorhanden.");
|
|
return "Emailadresse nicht bekannt.";
|
|
}
|
|
|
|
// delete record
|
|
$query = $pdo->prepare($general['sql']['delete_record']);
|
|
if ( ! $query->execute([':e' => $subscriberAddress])) {
|
|
error_log("Datenbankfehler: Löschen von Emailadresse {$subscriberAddress} ergab einen Fehler.");
|
|
return 'Fehler beim Löschen des Datenbankeintrags.';
|
|
}
|
|
} catch(\PDOException $e) {
|
|
error_log("Datenbankfehler: {$e->getMessage()}");
|
|
return $e->getMessage();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
if (isset($_GET['e'])) {
|
|
$e = filter_var($_GET["e"], FILTER_SANITIZE_STRING);
|
|
$result = RemoveSubscriberFromDB($e);
|
|
if ($result === TRUE) {
|
|
GracefulExit($successURL, "Abmeldung für {$e} erfolgreich.");
|
|
} elseif (gettype($result == 'string')) {
|
|
GracefulExit($errorURL, "Abmeldung fehlgeschlagen: {$result}");
|
|
} else {
|
|
GracefulExit($errorURL, 'Abmeldung fehlgeschlagen: Unbekannter Fehler');
|
|
}
|
|
} else {
|
|
GracefulExit($errorURL, 'Abmeldung fehlgeschlagen: Fehlerhafte Emailadresse');
|
|
}
|
|
?>
|