Я пытаюсь реализовать счетчик отправки формы на php, если данные с формы отправляются на сервер, в файл counter.txt записывается +1, потом эти данные используются для формирования заголовка в письме как № заявки. Все работает, но на почту приходит 12 одинаковых писем, при следующей отправке 32 и тд. В чем проблема? Почему это происходит?
<?php
$email = trim(strip_tags($_POST['f']['sel']));
$change = trim(strip_tags($_POST['f']['button-set']));
$name = trim(strip_tags($_POST['f']['name']));
$question = trim(strip_tags($_POST['f']['message']));
$submit = trim(strip_tags($_POST['f']['submit']));
if(isset($submit)){
$count = file_get_contents('counter.txt');
$count++;
file_put_contents('counter.txt',$count);
}
else {
$count = file_get_contents('counter.txt');
};
$to = 'support@archsupport.ru';
$subject = 'Заявка №:' . $count . ' с сайта archsupport.ru';
$message = 'Имя: ' . $name . "\r\n" . 'Контакты: ' . $email . "\r\n" . 'Написать ' . $change . "\r\n" . 'Вопрос: ' . $question ;
$headers = 'From: zergg52@gmail.com ' . "\r\n";
$subject = preg_replace("/(\r\n)|(\r)|(\n)/", "", $subject);
$subject = preg_replace("/(\t)/", " ", $subject);
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
@mail($to, $subject, $message, $headers);
echo 'сообщение отправлено!';
?>
Код страницы:
var form = document.getElementsByTagName('form')[0];
var names = document.getElementById('name');
var validn = document.getElementById('vn');
var iconrequired = document.querySelector('#namereq');
var email = document.getElementById('sellection');
var valids = document.getElementById('vs');
var iconrequireds = document.querySelector('#sellectionreq');
var text = document.getElementById('qestions');
var validt = document.getElementById('vt');
var iconrequiredt = document.querySelector('#textreq');
document.addEventListener('input', function validation() {
var x = document.forms["support"]["sellection"].value;
if (names.validity.valid) {
validn.className = "valid";
iconrequired.className = "iconrequired hide";
};
if (email.validity.valid && x != "") {
valids.className = "valid";
iconrequireds.className = "iconrequired hide";
};
if (text.validity.valid) {
validt.className = "valid";
iconrequiredt.className = "iconrequired hide";
};
if (!names.validity.valid) {
validn.className = "invalid";
iconrequired.className = "iconrequired hide";
};
if (!email.validity.valid) {
valids.className = "invalid";
iconrequireds.className = "iconrequired hide";
};
if (!text.validity.valid){
validt.className = "invalid";
iconrequiredt.className = "iconrequired hide";
};
if (names.validity.valid && email.validity.valid && text.validity.valid){
$('#support').submit(function(){
$.post(
'https://www.archsupport.ru/post-email.php', // адрес обработчика
$("#support").serialize(), // отправляемые данные
function(msg) { // получен ответ сервера
$('#support').hide('slow');
$('#my_message_email').html(msg);
}
);
});
} else {
return false;
}
});
function validateSellection(){
var x=document.forms["support"]["sellection"].value;
if (x === "") {
document.getElementById('sellectionreq').classList.remove("hide");
return false;
} else {
document.getElementById('sellectionreq').classList.add("hide");
return false;
}
};
function validateName(){
var x=document.forms["support"]["name"].value;
if (x === "") {
document.getElementById('namereq').classList.remove("hide");
return false;
} else {
document.getElementById('namereq').classList.add("hide");
return false;
}
};
function validateText(){
var x=document.forms["support"]["qestions"].value;
if (x === "") {
document.getElementById('textreq').classList.remove("hide");
return false;
} else {
document.getElementById('textreq').classList.add("hide");
return false;
}
};
$('#support').submit(function validate(){
if(validateName() && validateSellection() && validateText()===true){
return ;
} else {
validateSellection();
validateName();
validateText()
return false
}
});
$(".radio").on('click.two', function() {
let input = $("#sellection");
if ($("#radio").prop("checked")) {
input.prop("disabled", false);
input.prop({
"type": "email",
"placeholder": "example@yourmail.ru",
"autocomplete": "email",
"maxlength": "35",
"minlength": "12",
"value": "",
});
document.getElementById("sellection").pattern = "^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$";
} else {
input.prop("disabled", false);
$("#sellection").prop({
"type": "tel",
"placeholder": "+7-910-205-46-15",
"autocomplete": "tel",
"maxlength": "16",
"minlength": "11",
"value": "",
});
document.getElementById("sellection").pattern = "\\+7\\s?[\\(]{0,1}9[0-9]{2}[\\)]{0,1}\\s?\\d{3}[-]{0,1}\\d{2}[-]{0,1}\\d{2}";
}
input.focus();
input.val("");
});
var iconsel = $('.icons');
iconsel.on('click.ten', function iconback() {
iconsel.removeClass('checked');
$(this).addClass('checked');
});
@font-face {
font-family: "HelveticaNeueCyr-Thin";
src: url("/fonts/HelveticaNeueCyr-Thin.ttf") format("truetype");
font-style: normal;
font-weight: normal;
font-display: swap;
}
@keyframes req { 0% { transform:translatex(0px) ; } 100% { transform:translatex(5px) ; } }
@keyframes inv { 0% { opacity:.5 ; } 100% { opacity:1 ; } }
* {
padding:0;
margin:0;
}
:root {
font-family: "HelveticaNeueCyr-Thin";
font-weight:100;
}
form {
font-size: 24px;
position: relative;
width:100%;
display: inline-flex;
flex-direction: column;
}
textarea {
height: 30vh;
border-radius: 18px;
padding-left: 15px;
padding-top:10px;
border: 2px solid #d7d7d7;
overflow: hidden;
overflow-y: scroll;
outline: none;
resize: none
}
input,
textarea {
font-family: "HelveticaNeueCyr-Thin";
font-weight: 100;
font-size: 18px;
}
::-webkit-input-placeholder {
color: gray;
font-size: 18px;
}
::-moz-placeholder {
color: gray;
font-size: 18px;
}
/* Firefox 19+ */
:-moz-placeholder {
color: gray;
font-size: 18px;
}
/* Firefox 18- */
:-ms-input-placeholder {
color: gray;
font-size: 18px;
}
input:not([type="submit"]) {
border-radius:100px;
padding-left:15px;
height:36px;
border:none;
background: #f3f3f3;
}
input:focus {
outline:none;
border:2px solid #f3f3f3;
box-sizing:border-box;
background:white;
padding-left:13px;
}
.required {
display:inline-flex;
width:100%;
flex-direction: column;
margin-bottom: 15px;
position:relative;
}
.iconrequired{
margin:auto;
display:flex;
align-items: center;
justify-content: center;
width:90px;
height:14px;
color: white;
border-radius:100px;
font-size:10px;
font-weight:100;
font-family: "HelveticaNeueCyr-Thin";
background:#343434;
position:absolute;
right:15px;
top: 10px;
opacity:1;
transition: opacity ease-out 1s;
animation: .05s ease-in-out 0s 4 alternate req;
}
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
transition: background-color 5000s ease-in-out 0s;
border:2px solid #f3f3f3;
box-sizing:border-box;
padding-left:13px;
}
div.button-set {
display: inline-flex;
}
div.button-set>label {
position: relative;
flex: 0 0 auto;
height: 50px;
width: 50px;
margin-left: 15px;
border-radius: 100px;
outline: none;
border: none;
margin-bottom: 20px;
}
.checked {
background: #f3f3f3;
border-radius: 100px;
}
input[type="submit"] {
font-family: "HelveticaNeueCyr-Thin";
height: 36px;
width: 160px;
font-weight: 100;
font-size: 24px;
margin-top: 20px;
margin-left: 10px;
border: none;
border-radius: 100px;
background: #f3f3f3;
padding:0;
}
::-webkit-scrollbar {
position: absolute;
z-index: 9999;
width: 5px;
}
::-webkit-scrollbar-button {
display: none;
}
::-webkit-scrollbar-track {
z-index: 9999;
background-color: transparent;
}
::-webkit-scrollbar-track-piece {
z-index: 9999;
z-index: 9999;
background-color: transparent;
}
::-webkit-scrollbar-thumb {
z-index: 9999;
background-color: #d7d7d7;
border-radius: 3px;
}
::-webkit-scrollbar-corner {
z-index: 9999;
background-color: #d7d7d7;
}
.invalid {
width:12px;
height:12px;
color: white;
position:absolute;
right:15px;
top: 12px;
background:tomato;
border-radius:6px;
animation: 2s ease-in-out 0s infinite alternate inv;
}
.valid {
width:12px;
height:12px;
color: white;
position:absolute;
right:15px;
top: 12px;
background:#9dc46b;
border-radius:6px;
animation: 2s ease-in-out 0s infinite alternate inv;
}
.error {
text-align:right;
font-size:12px;
padding-right:20px;
padding-top:10px;
color:gray;
letter-spacing:.05em;
}
.hide {
display:none;
}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/css/form.css">
</head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<form novalidate action="" method="post" name="support" id="support" >
<label class="required"><span id="vs" class="invalid hide"></span><input id="sellection" class="mail sellection" name="f[sel]" vlaue="" placeholder="выбери удобный способ связи ниже...." required disabled><span id="error1"></span><div id="sellectionreq" class="iconrequired hide">ОБЯЗАТЕЛЬНОЕ</div></label>
<div class="button-set">
<label title="Почта"><img class="icons" src='/img/icon/social_icon_mail_white.svg'><input class="radio" id="radio" type="radio" name="f[button-set]" value="на почту" style="display:none;"></label>
<label for="radio1" title="WhatsApp"><img class="icons" src='/img/icon/social_icon_whatsapp_white.svg'><input class="radio" id="radio1" type="radio" name="f[button-set]" value="в WhatsApp" style="display:none;"></label>
<label for="radio2" title="Telegram"><img class="icons" src='/img/icon/social_icon_telegram_white.svg'><input class="radio" id="radio2" type="radio" name="f[button-set]" value="в Telegram" style="display:none;"></label>
<label for="radio3" title="Viber"><img class="icons" src='/img/icon/social_icon_viber_white.svg'><input class="radio" id="radio3" type="radio" name="f[button-set]" value="в Viber" style="display:none;"></label>
</div>
<label class="required"><span id="vn" class="invalid hide"></span>
<input id="name" class="mail" type="name" name="f[name]" autocomplete= none placeholder="как к тебе обращаться...." value="" pattern="[А-Яа-яЁё]+(\s+[А-Яа-яЁё]+)?" maxlength="15" minlength="2" required><div id="namereq" class="iconrequired hide">ОБЯЗАТЕЛЬНОЕ</div></label>
<label class="required"><span id="vt" class="invalid hide"></span><textarea id="qestions" type="text" placeholder="введи текст своего вопроса...." name="f[message]" value="" pattern="[А-Яа-яЁё]+(\s+[А-Яа-яЁё]+)?" maxlength="4000" minlength="45" required></textarea><div id="textreq" class="iconrequired hide">ОБЯЗАТЕЛЬНОЕ</div></label>
<input name="f[submit]" type="submit" id="submit" value="ОТПРАВИТЬ" />
</form>
<div id="my_message_email"></div>
</body>
</html>
Дело, естественно, было не в обработчике на стороне сервера,а в криво написанном Jquery вперемешку с JavaScript. Я переписал все сам, на чистом JS и теперь все в рабочем состоянии. Конечно, я понимаю, что код не очень хорош, он грязный и там много лишнего, но все же он работает. Может быть кому-то понадобиться, как пример.
В этой форме я попытался реализовать такие функции как:
На стороне браузера:
валидация полей формы в браузере в реальном времени;
дополнительное выделение пустых обязательных полей при отправке;
отправка формы с помощью XMLHttpRequest()
(без перезагрузки страницы).
подключение reCAPTCHAv2
На стороне сервера:
простая проверка полей формы;
проверка reCAPTCHA;
счетчик отправленных форм для формирования заголовка письма по типу: "Заявка № 384 с сайта example.ru" (для того чтобы письма не группировались и их было удобно читать);
отправка данных с формы на почту.
Форма обратной связи:
var forms = document.getElementById('support');
var names = document.getElementById('name');
var validn = document.getElementById('vn');
var iconrequired = document.getElementById('namereq');
var email = document.getElementById('sellection');
var valids = document.getElementById('vs');
var iconrequireds = document.getElementById('sellectionreq');
var text = document.getElementById('qestions');
var validt = document.getElementById('vt');
var iconrequiredt = document.getElementById('textreq');
//ВАЛИДАЦИЯ ПОЛЕЙ ФОРМЫ
document.addEventListener('input', validateform);
function validateform() {
var x = document.forms["support"]["sellection"].value;
if (names.validity.valid) {
validn.className = "valid";
iconrequired.classList.add("hide");
}
if (email.validity.valid && x !== "") {
valids.className = "valid";
iconrequireds.classList.add("hide");
}
if (text.validity.valid) {
validt.className = "valid";
iconrequiredt.classList.add("hide");
}
if (names.validity.valid && email.validity.valid && !email.hasAttribute('disabled') && text.validity.valid === true) {
iconrequiredt.classList.add("hide");
iconrequireds.classList.add("hide");
iconrequired.classList.add("hide");
return true
} else {
if (!names.validity.valid) {
validn.className = "invalid";
iconrequired.classList.add("hide");
}
if (!email.validity.valid) {
valids.className = "invalid";
iconrequireds.classList.add("hide");
}
if (!text.validity.valid) {
validt.className = "invalid";
iconrequiredt.classList.add("hide");
}
if (names.validity.valid || email.validity.valid || !email.hasAttribute('disabled') || text.validity.valid === false) {
iconrequiredt.classList.add("hide");
iconrequireds.classList.add("hide");
iconrequired.classList.add("hide");
}
}
}
//ВАЛИДАЦИЯ ФОРМЫ
forms.addEventListener('submit', validspace)
function validspace() {
if (IsNullEmail() && IsNullName() && IsNullText() && validateform() === true) {
submitFormAjax();
return false;
} else {
IsNullEmail();
IsNullName();
IsNullText();
return false
}
return false
}
//ПУСТЫЕ ПОЛЯ
function IsNullEmail() {
if (email.value.length === 0) {
iconrequireds.classList.remove("hide");
} else {
iconrequireds.classList.add("hide");
return true
}
}
function IsNullName() {
if (names.value.length === 0) {
iconrequired.classList.remove("hide");
} else {
iconrequired.classList.add("hide");
return true
}
}
function IsNullText() {
if (text.value.length === 0) {
iconrequiredt.classList.remove("hide");
} else {
iconrequiredt.classList.add("hide");
return true
}
}
//XMLHttpRequest
function submitFormAjax() {
let captcha = grecaptcha.getResponse();
if (captcha.length) {
let xmlhttp = window.XMLHttpRequest ?
new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200)
alert(this.responseText);
}
let formData = new FormData(document.querySelector('#support'));
formData.append('g-recaptcha-response', captcha);
let data = new URLSearchParams(Array.from(formData)).toString();
xmlhttp.open('POST', 'https://www.archsupport.ru/post-email.php', true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(data);
}
document.querySelector('#support').reset();
grecaptcha.reset();
}
// setATTR'S
Element.prototype.setAttributes = function(attrs) {
for (var idx in attrs) {
if ((idx == 'styles' || idx == 'style') && typeof attrs[idx] == 'object') {
for (var prop in attrs[idx]) {
this.style[prop] = attrs[idx][prop]
}
} else {
this.setAttribute(idx, attrs[idx]);
}
}
};
//CHANGE VALUE
let radioChange = document.querySelectorAll(".radio");
for (var i = 0, len = radioChange.length; i < len; i++) {
radioChange[i].addEventListener('change', change);
}
function change() {
let input = document.getElementById("sellection");
if (document.querySelector("#radio").checked === true) {
input.removeAttribute('disabled')
input.setAttributes({
'type': 'email',
'placeholder': 'example@yourmail.ru',
'autocomplete': 'email',
'maxlength': '35',
'minlength': '12',
'pattern': '^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$',
'value': ""
});
} else if (document.querySelector("#radio").checked == false) {
input.removeAttribute('disabled');
input.setAttributes({
'type': 'tel',
'placeholder': '+7-910-205-46-15',
'autocomplete': 'tel',
'maxlength': '36',
'minlength': '11',
'pattern': '\\+7\\s?[\\(]{0,1}9[0-9]{2}[\\)]{0,1}\\s?\\d{3}[-]{0,1}\\d{2}[-]{0,1}\\d{2}',
'value': ""
});
}
input.value = "";
input.focus();
};
//ICON ONCLICK
function toggleItem(elem) {
for (var i = 0; i < elem.length; i++) {
elem[i].addEventListener("change", function(e) {
var current = this;
for (var i = 0; i < elem.length; i++) {
if (current != elem[i]) {
elem[i].classList.remove('checked');
} else if (current.classList.contains('checked') === true) {
current.classList.remove('checked');
} else {
current.classList.add('checked')
}
}
e.preventDefault();
});
};
}
toggleItem(document.querySelectorAll('.icons'));
@keyframes req {
0% {
transform: translatex(0px);
}
100% {
transform: translatex(5px);
}
}
@keyframes inv {
0% {
opacity: .5;
}
100% {
opacity: 1;
}
}
@import url('https://fonts.googleapis.com/css?family=Raleway:100&display=swap');
* {
padding: 0;
margin: 0;
font-family: 'Raleway', sans-serif !important;
font-weight: 100 !important;
--lighter: #ededed;
--light: #d6d6d6;
--dark: #d7d7d7;
--dark1: gray;
--black: #343434;
}
form {
font-size: 24px;
position: relative;
width: 100%;
display: inline-flex;
flex-direction: column;
}
textarea {
height: 30vh;
border-radius: 18px;
padding-left: 15px;
padding-top: 10px;
border: 2px solid var(--dark);
overflow: hidden;
overflow-y: scroll;
outline: none;
resize: none
}
input,
textarea {
font-size: 18px;
}
::-webkit-input-placeholder {
color: var(--dark1);
font-size: 18px;
}
::-moz-placeholder {
color: var(--dark1);
font-size: 18px;
}
/* Firefox 19+ */
:-moz-placeholder {
color: var(--dark1);
font-size: 18px;
}
/* Firefox 18- */
:-ms-input-placeholder {
color: var(--dark1);
font-size: 18px;
}
input:not([type="submit"]) {
border-radius: 100px;
padding-left: 15px;
height: 36px;
border: none;
background: var(--lighter);
}
input:focus {
outline: none;
border: 2px solid var(--dark);
box-sizing: border-box;
background: white;
padding-left: 13px;
}
.required {
display: inline-flex;
width: 100%;
flex-direction: column;
margin-bottom: 15px;
position: relative;
}
.iconrequired {
margin: auto;
display: flex;
align-items: center;
justify-content: center;
width: 90px;
height: 14px;
color: white;
border-radius: 100px;
font-size: 10px;
background: var(--black);
position: absolute;
right: 15px;
top: 10px;
opacity: 1;
transition: opacity ease-out 1s;
animation: .05s ease-in-out 0s 4 alternate req;
}
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
transition: background-color 5000s ease-in-out 0s;
border: 2px solid #f3f3f3;
box-sizing: border-box;
padding-left: 13px;
}
div.button-set {
display: inline-flex;
}
div.button-set>label {
position: relative;
flex: 0 0 auto;
height: 50px;
width: 50px;
margin-left: 15px;
border-radius: 100px;
outline: none;
border: none;
margin-bottom: 20px;
}
.checked {
background: var(--dark);
border-radius: 100px;
}
input[type="submit"] {
height: 36px;
width: 160px;
font-size: 24px;
margin-top: 20px;
margin-left: 10px;
border: none;
border-radius: 100px;
background: #f3f3f3;
padding: 0;
}
::-webkit-scrollbar {
position: absolute;
z-index: 9999;
width: 5px;
}
::-webkit-scrollbar-button {
display: none;
}
::-webkit-scrollbar-track {
z-index: 9999;
background-color: transparent;
}
::-webkit-scrollbar-track-piece {
z-index: 9999;
z-index: 9999;
background-color: transparent;
}
::-webkit-scrollbar-thumb {
z-index: 9999;
background-color: #d7d7d7;
border-radius: 3px;
}
::-webkit-scrollbar-corner {
z-index: 9999;
background-color: #d7d7d7;
}
.invalid {
width: 12px;
height: 12px;
position: absolute;
right: 15px;
top: 12px;
background: tomato;
border-radius: 6px;
animation: 2s ease-in-out 0s infinite alternate inv;
}
.valid {
width: 12px;
height: 12px;
position: absolute;
right: 15px;
top: 12px;
background: #9dc46b;
border-radius: 6px;
animation: 2s ease-in-out 0s infinite alternate inv;
}
.error {
text-align: right;
font-size: 12px;
padding-right: 20px;
padding-top: 10px;
color: gray;
letter-spacing: .05em;
}
.hide {
display: none;
}
.g-recaptcha {
right: 0;
margin-top: 36px;
}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
</head>
<body>
<form id="support" onSubmit='return false' novalidate>
<label class="required"><span id="vs" class="invalid hide"></span><input id="sellection" class="mail sellection" name="sel" vlaue="" placeholder="выбери способ связи...." required disabled><span id="error1"></span><div id="sellectionreq" class="iconrequired hide">ОБЯЗАТЕЛЬНО</div></label>
<div class="button-set">
<label title="Email" class="icons"><img src='https://drive.google.com/uc?export=view&id=12dgg88tY-Zv9YJSF3GGFKiBoccbcli7b'><input class="radio" id="radio" type="radio" name="button-set" value="на почту" style="display:none;"></label>
<label for="radio1" title="WhatsApp" class="icons"><img src='https://drive.google.com/uc?export=view&id=1SEtRXe081ekScf3q8RGR-AbCPIj-BfDM'><input class="radio" id="radio1" type="radio" name="button-set" value="в WhatsApp" style="display:none;"></label>
<label for="radio2" title="Telegram" class="icons"><img src='https://drive.google.com/uc?export=view&id=1f_qsaD8vSG99IdKvWNm9xWiJ8h1wdjeM'><input class="radio" id="radio2" type="radio" name="button-set" value="в Telegram" style="display:none;"></label>
<label for="radio3" title="Viber" class="icons"><img src='https://drive.google.com/uc?export=view&id=1Qq1htnz12ztZ1i5wPYOaXPLTWul_Vj3o'><input class="radio" id="radio3" type="radio" name="button-set" value="в Viber" style="display:none;"></label>
</div>
<label class="required"><span id="vn" class="invalid hide"></span>
<input id="name" class="mail" type="name" name="name" autocomplete= none value="" placeholder="как к тебе обращаться...." pattern="[А-Яа-яЁё]+(\s+[А-Яа-яЁё]+)?" maxlength="15" minlength="2" required><div id="namereq" class="iconrequired hide">ОБЯЗАТЕЛЬНО</div></label>
<label class="required"><span id="vt" class="invalid hide"></span><textarea id="qestions" type="text" value="" placeholder="твой вопрос...." name="message" pattern="[А-Яа-яЁё]+(\s+[А-Яа-яЁё]+)?" maxlength="400" minlength="40" required></textarea><div id="textreq" class="iconrequired hide">ОБЯЗАТЕЛЬНО</div></label>
<input name="submit" type="submit" id="submit" value="ОТПРАВИТЬ" />
</form>
<div id="message"></div>
<div class="g-recaptcha" data-sitekey="6LceVswUAAAAAA09b8TVrZhKMFKOhxMmdvPWOzQm" data-size="visible">
</div>
</body>
</html>
PHP:
header('Access-Control-Allow-Origin: *'); //предотвращает ошибку связанную с заголовком CORS «Access-Control-Allow-Origin»
$email = ($_POST['sel']);
$change = ($_POST['button-set']);
$name = ($_POST['name']);
$question = ($_POST['message']);
$submit = ($_POST['submit']);
$secret = '6xceVswUAxxxLgcxxzsssE4z1xxUjqDotYhbb'; //проверка reCAPTCHA
$ip =$_SERVER['REMOTE_ADDR'];
$recaptcha =$_POST['g-recaptcha-response'];
$google_url ="https://www.google.com/recaptcha/api/siteverify";
$url =$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
$curl =curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
$curlData =curl_exec($curl);
curl_close($curl);
$res =json_decode($curlData, true);
function clean($value = "") { //функция отчистки от лишних символов
$value = trim($value);
$value = stripslashes($value);
$value = strip_tags($value);
$value = htmlspecialchars($value);
return $value;
}
$email = clean($email);
$change = clean($change);
$name = clean($name);
$question = clean($question);
function check_length($value = "", $min, $max) {//функция проверки длинны полей формы
$result = (mb_strlen($value) < $min || mb_strlen($value) > $max);
return !$result;
}
if(!empty($email) && !empty($name) && !empty($question)) {
if(check_length($email, 11, 36) && check_length($name, 2, 15) && check_length($question, 40, 400) && $res['success']) {//проверка длинны полей формы
$counter_file = 'counter.txt'; //счетчик
clearstatcache();
ignore_user_abort(true);
$fh = fopen($counter_file, 'r+b');
if ($fh)
{
if (flock($fh, LOCK_EX))
{
$count = fread($fh, filesize($counter_file));
rewind($fh);
$count++;
fwrite($fh, $count);
fflush($fh);
ftruncate($fh, ftell($fh));
flock($fh, LOCK_UN);
} fclose($fh);
} else
ignore_user_abort(false);
$to = 'support@archsupport.ru'; //отправка на email
$subject = 'Заявка №' . $count . ' с сайта archsupport.ru';
$message = 'Имя: ' . $name . "\r\n" . 'Контакты: ' . $email . "\r\n" . 'Написать ' . $change . "\r\n" . 'Вопрос: ' . $question ;
$headers = 'From: zergg52@gmail.com ' . "\r\n";
$subject = preg_replace("/(\r\n)|(\r)|(\n)/", "", $subject);
$subject = preg_replace("/(\t)/", " ", $subject);
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
@mail($to, $subject, $message, $headers);
echo 'сообщение отправлено!';
} else {
echo "форма не была отправлена введенные данные некорректны";
}
} else {
echo "форма не была отправлена заполните пустые поля";
}
?>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть непонятная проблема с админ панелью WordPressЗагрузил сайт заказчику на хостинг, сам сайт работает корректно, CSS и JS, всё подгружает, но админ...
С самого начала я хотел из таблицы взять массив, который является json-массивом, но у меня не получилосьЯ попробовал вывести при json_encode массив...
Скачал пример с использованием gettext: https://githubcom/nota-ja/php-gettext-example Система: Debian 10 Локали настроены
Возможно ли создать базу данных с дефисом в названии? Если да, то как? Спасибо