48 lines
1.3 KiB
PHP
48 lines
1.3 KiB
PHP
<?php
|
|
|
|
require(dirname(__FILE__) . '/settings.php');
|
|
|
|
$successURL = '/newsletter/success.html';
|
|
$errorURL = '/newsletter/error.html';
|
|
$err = "Abmeldung fehlgeschlagen";
|
|
|
|
function RemoveSubscriberFromDB($subscriberAddress) {
|
|
$pdo = getPDO();
|
|
|
|
// make sure record exists
|
|
$check = NotAlreadySubscribed($subscriberAddress, $pdo);
|
|
if ( gettype($check) == 'string' ) {
|
|
return $check;
|
|
}
|
|
|
|
// delete record
|
|
global $general;
|
|
$query = $pdo->prepare($general['sql']['delete_record']);
|
|
if ( ! $query->execute([':e' => $subscriberAddress])) {
|
|
return "Fehler beim Löschen des Datenbankeintrags für {$subscriberAddress}.";
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
// check if hash and email parameters are both set
|
|
if ( ! (isset($_GET['c']) and isset($_GET['e'])) ) {
|
|
GracefulExit($errorURL, "{$err}: Fehlende Emailadresse oder Hash");
|
|
}
|
|
|
|
// check if hash is correct
|
|
$c = filter_var($_GET['c'], FILTER_SANITIZE_STRING);
|
|
$e = filter_var($_GET['e'], FILTER_SANITIZE_STRING);
|
|
if ( ! GetConfirmationHash($e) === $c ) {
|
|
GracefulExit($errorURL, "{$err}: Fehlerhafter Hash");
|
|
}
|
|
|
|
// remove email from database
|
|
try {
|
|
$result = RemoveSubscriberFromDB($e);
|
|
if (gettype($result) == 'string') {
|
|
GracefulExit($errorURL, "{$err}: {$result}");
|
|
}
|
|
} catch(\PDOException $e) {
|
|
GracefulExit($error, "{$err}: {$e->getMessage()}");
|
|
}
|
|
?>
|