403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/seaside.pacim.de/web/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/seaside.pacim.de/web/newsletter.php
<?php
/**
 * newsletter.php – ÖFFENTLICH: Newsletter-Abmeldung (One-Click) und Double-Opt-in-Bestätigung.
 * Signierte Tokens (HMAC). Kein Login. Aufruf:
 *   /newsletter.php?a=unsub&c=<customer_id>&t=<token>
 *   /newsletter.php?a=confirm&c=<customer_id>&t=<token>
 */
require_once( __DIR__ . '/includes/config.inc.php' );
@ini_set( 'display_errors', '0' );
error_reporting( 0 );

function nl_page( $title, $msg, $ok = true ) {
    $site = defined( 'SITE_URL' ) ? SITE_URL : '';
    $color = $ok ? '#2e9e4f' : '#d63939';
    header( 'Content-Type: text/html; charset=utf-8' );
    echo '<!doctype html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">'
       . '<title>' . htmlspecialchars( $title, ENT_QUOTES, 'UTF-8' ) . '</title>'
       . '<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">'
       . '<style>body{margin:0;min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f7fb;font-family:Inter,Arial,sans-serif;color:#1e2633}'
       . '.card{max-width:440px;background:#fff;border:1px solid #e6e7eb;border-radius:12px;box-shadow:0 10px 40px rgba(15,23,42,.08);padding:32px;text-align:center}'
       . '.ic{width:60px;height:60px;border-radius:50%;background:' . $color . '1a;color:' . $color . ';display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:30px;font-weight:700}'
       . 'h1{font-size:20px;margin:0 0 8px}p{color:#626d7d;font-size:14px;line-height:1.6;margin:0}</style></head><body>'
       . '<div class="card"><div class="ic">' . ( $ok ? '&#10003;' : '!' ) . '</div><h1>' . htmlspecialchars( $title, ENT_QUOTES, 'UTF-8' ) . '</h1><p>' . $msg . '</p></div></body></html>';
    exit();
}

$a = isset( $_GET['a'] ) ? $_GET['a'] : '';
$c = (int) ( $_GET['c'] ?? 0 );
$t = (string) ( $_GET['t'] ?? '' );
$g = (string) ( $_GET['g'] ?? '' );   // Zielgruppe: leer/customer | employee | partner

if ( $a === 'unsub' ) {
    $db = new MysqliDb( MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB );
    if ( $g === 'employee' || $g === 'partner' ) {
        if ( $c <= 0 || ! pacim_sign_verify( 'unsub:' . $g . ':' . $c, $t ) ) nl_page( 'Ungültiger Link', 'Dieser Abmeldelink ist ungültig oder abgelaufen.', false );
        $u = $db->rawQueryOne( "SELECT user_email FROM pacim_users WHERE user_id = ?", array( $c ) );
        if ( ! $u ) nl_page( 'Nicht gefunden', 'Der Kontakt wurde nicht gefunden.', false );
        newsletter::suppress( $u['user_email'], 'unsubscribe', null );
        nl_page( 'Abgemeldet', 'Sie wurden erfolgreich abgemeldet. Sie erhalten keine weiteren Newsletter-Mails mehr.' );
    }
    if ( $g === 'list' ) {
        if ( $c <= 0 || ! pacim_sign_verify( 'unsub:list:' . $c, $t ) ) nl_page( 'Ungültiger Link', 'Dieser Abmeldelink ist ungültig oder abgelaufen.', false );
        $e = $db->rawQueryOne( "SELECT entry_email FROM pacim_mail_list_entries WHERE entry_id = ?", array( $c ) );
        if ( ! $e ) nl_page( 'Nicht gefunden', 'Der Kontakt wurde nicht gefunden.', false );
        newsletter::suppress( $e['entry_email'], 'unsubscribe', null );
        nl_page( 'Abgemeldet', 'Sie wurden erfolgreich abgemeldet. Sie erhalten keine weiteren Newsletter-Mails mehr.' );
    }
    if ( $c <= 0 || ! pacim_sign_verify( 'unsub:' . $c, $t ) ) nl_page( 'Ungültiger Link', 'Dieser Abmeldelink ist ungültig oder abgelaufen.', false );
    $cust = $db->rawQueryOne( "SELECT customer_email FROM pacim_customer WHERE customer_id = ?", array( $c ) );
    if ( ! $cust ) nl_page( 'Nicht gefunden', 'Der Kontakt wurde nicht gefunden.', false );
    newsletter::suppress( $cust['customer_email'], 'unsubscribe', $c );
    nl_page( 'Abgemeldet', 'Sie wurden erfolgreich vom Newsletter abgemeldet. Sie erhalten keine weiteren Newsletter-Mails mehr.' );
}

if ( $a === 'confirm' ) {
    if ( $c <= 0 || ! pacim_sign_verify( 'optin:' . $c, $t ) ) nl_page( 'Ungültiger Link', 'Dieser Bestätigungslink ist ungültig oder abgelaufen.', false );
    newsletter::confirmOptin( $c );
    nl_page( 'Anmeldung bestätigt', 'Vielen Dank! Ihre Newsletter-Anmeldung ist jetzt bestätigt.' );
}

http_response_code( 400 );
nl_page( 'Ungültige Anfrage', 'Die Anfrage konnte nicht verarbeitet werden.', false );

Youez - 2016 - github.com/yon3zu
LinuXploit