Files
vij/page-subscript.php
2025-03-02 02:42:38 +03:00

101 lines
3.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
get_header();
?>
<div id="content">
<h1 id="mainpage-title">Подписка на рассылку</h1>
<div id="fulltext">
<?php echo handle_subscription_confirmation(); ?>
</div>
</div>
<?php get_footer();
function handle_subscription_confirmation() {
global $wpdb;
$html = '';
$err = '<p class="re-error">Не можем подтвердить ваши данные. Пожалуйста, повторите попытку.</p>';
// Режим подтверждения подписки
if (isset($_GET['id'])) {
$sanitized_id = sanitize_text_field($_GET['id']);
$sql_update = $wpdb->prepare("UPDATE {$wpdb->prefix}subusers SET status = 1 WHERE hash = %s", $sanitized_id);
$wpdb->query($sql_update);
$html .= '<p>Спасибо, мы включили Ваш e-mail!</p>
<p>Наши письма могут оказаться в разделе "Рассылки" Вашего почтового приложения или сайта.</p>';
return $html;
}
// Поле mytext должно быть пустым
if (!empty($_POST['mytext'])) {
return $err;
}
// Проверка nonce
if (!isset($_POST['subscription_nonce']) || !wp_verify_nonce($_POST['subscription_nonce'], 'subscription_form_nonce')) {
return $err;
}
// Проверка hash адреса
//if (!isset($_POST['addrhash']) || $_POST['addrhash'] !== adddr_hash()) {
// return $err;
//}
// Основная обработка подписки
if (isset($_POST['email'])) {
if (!isset($_POST['re_num']) || !isset($_POST['re_code'])) {
return $err;
}
$user_answer = (int)$_POST['re_num'];
$expected_hash = hash_hmac('sha256', $user_answer, FRM_KEY);
if ($_POST['re_code'] === $expected_hash) {
$email = strtolower(trim($_POST['email']));
$email = sanitize_email($email);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$hash = md5('775+' . $email);
$date_insert = current_time('mysql');
$wpdb->insert(
"{$wpdb->prefix}subusers",
[
'mail' => $email,
'status' => 0,
'hash' => $hash,
'date' => $date_insert
],
['%s', '%d', '%s', '%s']
);
$hash_link = home_url('/subscript?id=' . $hash);
$to = $email;
$subject = 'Подписка на рассылку ВиЖ';
$message = "Здравствуйте!\n\nДля подтверждения подписки на нашу рассылку перейдите по ссылке ниже\n$hash_link.\n\nЕсли вы не отправляли заявку, просто проигнорируйте это письмо.";
$headers = ['Content-Type: text/plain; charset=UTF-8'];
wp_mail($to, $subject, $message, $headers);
$html .= '<p>Благодарим за интерес к нашему изданию!</p>
<p>На Вашу почту отправлено письмо для подтверждения подписки.</p>';
} else {
}
} else {
return $err;
}
} else {
return $err;
}
return $html;
}