Флажок HTML PHP

Я только что добавил флажок в свою контактную форму, чтобы указать, хочет ли пользователь подписаться на мою рассылку новостей или нет. Я бы хотел, чтобы мой PHP-скрипт выводил значение флажка, когда он отправляет мне электронное письмо. Я тщательно искал в Интернете и не могу найти никаких решений, просто люди с похожими проблемами. https://joebaileyphotography.com/contact%20me.html

HTML:

<form method = "post" name = "myemailform" action = "form-to-email.php">

<label class = "label" for = "fname">First Name</label>
<br>
<input type = "text" id = "fname" name = "fname" placeholder = "Your name..">
<br>
<label class = "label" for = "lname">Last Name</label>
<br>
<input type = "text" id = "lname" name = "lname" placeholder = "Your last name..">
<br>
<label class = "label" for = "Email">Email Address</label>
<br>
<input type = "text" id = "Email" name = "Email" placeholder = "Your email address...">
<br>
<label class = "label" for = "subject">Subject</label>
<br>
<textarea id = "subject" name = "subject" placeholder = "Drop me a line..." style = "height:200px"></textarea>
<br>
<input type = "checkbox" id = "subscribeNews" name = "subscribe" value = "newsletter" checked>
<label for = "subscribeNews">Yes, I would like to recieve news from Joe Bailey Photography.</label>
<br>
<br>
<input type = "checkbox" id = "privacyPolicy" name = "privacy" value = "privacy">
<label for = "privacyPolicy">I consent to having this website store my submitted information so they can respond to my inquiry. For more info, read the <a href = "/privacy-policy.html">Privacy Policy.</a></label>
<br>
<br>
<div class = "g-recaptcha" data-sitekey = "6LeqeRkTAAAAAFGmVFmAorEU9n0yL4NDEpSUnM0R"></div>
<br>
<input type = "submit" value = "Send Form">

PHP:

<?php
$response = $_POST["g-recaptcha-response"];
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
    'secret' => '6LeqeRkTAAAAABjyRvL0c1vrqG3ZmV51O0-S3xcz',
    'response' => $_POST["g-recaptcha-response"]
);
$options = array(
    'http' => array (
        'method' => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$verify = file_get_contents($url, false, $context);
$captcha_success=json_decode($verify);
if ($captcha_success->success==false) {
    echo "<p>Please go back and verify you are human.</p>";
} else if ($captcha_success->success==true) {

    $fname = $_POST['fname'];
    $lname = $_POST['lname'];
    $visitor_email = $_POST['Email'];
    $subject = $_POST['subject'];

    $email_subject = "Joe Bailey Photography Contact Form";
    $email_body = "You have received a new message from $fname $lname.\n".
    "Here is the message:\n$subject
    ";

    $to = "[email protected]";
    $headers = "From: $visitor_email \r\n";
    mail($to,$email_subject,$email_body,$headers);
    //done. redirect to thank-you page.
    header('Location: Contact%20Me%20Thank%20You.html#thankyou');
    function IsInjected($str)
    {
    $injections = array('(\n+)',
          '(\r+)',
          '(\t+)',
          '(%0A+)',
          '(%0D+)',
          '(%08+)',
          '(%09+)'
          );
    $inject = join('|', $injections);
    $inject = "/$inject/i";
    if (preg_match($inject,$str))
    {
        return true;
    }
        else
    {
        return false;
    }
    }
}

Возможный дубликат Как читать, если в PHP установлен флажок?

Martin 15.06.2018 19:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
71
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Чтобы понять, что вы получаете от формы, используйте var dump.

var_dump($_POST);

Вы увидите, что когда этот флажок установлен, у вас есть ключ privacy в массиве. Таким образом, вы можете использовать условие if, например

if (array_key_exists('privacy', $_POST) && !empty($_POST['privacy'])) {
    // send email
}

Я действительно надеялся вывести значение флажка «Подписаться». Я разобрался с конфиденциальностью с помощью Javascript.

Joe Bailey 15.06.2018 20:38

Эм-м-м? Используйте переменную $_POST['subscribe']. Не уверен, что получил то, что тебе нужно

Alessandro 15.06.2018 20:42

просто используйте

if (isset($_POST['subscribe'])){
$subscribe= $_POST['subscribe'];
}

$email_subject = "Joe Bailey Photography Contact Form";
$email_body = "You have received a new message from $fname $lname.\n".
"Here is the message:\n$subject
".
"$fname wishes to subscribe to the Newsletter: $subscribe --\n";

Где я должен это включить?

Joe Bailey 15.06.2018 20:38
Ответ принят как подходящий

Исправлена ​​проблема со следующим кодом:

<?php
$response = $_POST["g-recaptcha-response"];
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
    'secret' => '6LeqeRkTAAAAABjyRvL0c1vrqG3ZmV51O0-S3xcz',
    'response' => $_POST["g-recaptcha-response"]
);
$options = array(
    'http' => array (
        'method' => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$verify = file_get_contents($url, false, $context);
$captcha_success=json_decode($verify);
if ($captcha_success->success==false) {
    echo "<p>Please go back and verify you are human.</p>";
} else if ($captcha_success->success==true) {

    $fname = $_POST['fname'];
    $lname = $_POST['lname'];
    $visitor_email = $_POST['Email'];
    $subject = $_POST['subject'];
    $subscribe = $_POST['subscribe'];

    $email_subject = "Joe Bailey Photography Contact Form";
    $email_body = "You have received a new message from $fname $lname.\n".
    "Here is the message:\n$subject
    ".
    "$fname wishes to subscribe to the Newsletter: $subscribe --\n";

    if (isset($_POST['subscribe'])){
        $subscribe= $_POST['subscribe'];
    }

    $to = "[email protected]";
    $headers = "From: $visitor_email \r\n";
    mail($to,$email_subject,$email_body,$headers);
    //done. redirect to thank-you page.
    header('Location: Contact%20Me%20Thank%20You.html#thankyou');
    function IsInjected($str)
    {
    $injections = array('(\n+)',
          '(\r+)',
          '(\t+)',
          '(%0A+)',
          '(%0D+)',
          '(%08+)',
          '(%09+)'
          );
    $inject = join('|', $injections);
    $inject = "/$inject/i";
    if (preg_match($inject,$str))
    {
        return true;
    }
        else
    {
        return false;
    }
    }
}
?> 

Выводит электронное письмо в следующем виде: Вы получили новое сообщение от Джо Бейли. Вот сообщение: контрольная работа Джо желает подписаться на информационный бюллетень: Да - ИЛИ ЖЕ Вы получили новое сообщение от Джо Бейли. Вот сообщение: контрольная работа Джо желает подписаться на информационный бюллетень: -

Также изменено значение HTML-элемента #subscribeNews на "Да".

Грязно, но работает.

Другие вопросы по теме