101 lines
3.5 KiB
PHP
101 lines
3.5 KiB
PHP
<?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;
|
||
}
|