Я только что добавил флажок в свою контактную форму, чтобы указать, хочет ли пользователь подписаться на мою рассылку новостей или нет. Я бы хотел, чтобы мой 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;
}
}
}






Чтобы понять, что вы получаете от формы, используйте var dump.
var_dump($_POST);
Вы увидите, что когда этот флажок установлен, у вас есть ключ privacy в массиве. Таким образом, вы можете использовать условие if, например
if (array_key_exists('privacy', $_POST) && !empty($_POST['privacy'])) {
// send email
}
Я действительно надеялся вывести значение флажка «Подписаться». Я разобрался с конфиденциальностью с помощью Javascript.
Эм-м-м? Используйте переменную $_POST['subscribe']. Не уверен, что получил то, что тебе нужно
просто используйте
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";
Где я должен это включить?
Исправлена проблема со следующим кодом:
<?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 на "Да".
Грязно, но работает.
Возможный дубликат Как читать, если в PHP установлен флажок?