Чуть-чуть недопонимаю как передать данные из index.php(в нём находится форма) в send.php. Задачу осложняет то, что есть рекапча.
вот форма:
<form action="#" method="POST">
<div class="dannue">
<input type="text" name="fio" placeholder="fio" required>
<input type="text" name="email" placeholder="your email" required>
<input type="hidden" name="token" id="token">
</div>
<input type="text" name="thema" id="inp" placeholder="thema" required>
<textarea name="mess" cols="30" rows="10" placeholder="your mess" required></textarea>
<button id="send" type="submit">Send</button>
</form>
вот код js из того же файла, где лежит форма
<script>
document.querySelector('form').addEventListener('submit', (e) =>{
e.preventDefault();
let tk = '';
grecaptcha.ready(function() {
grecaptcha.execute('6LfjGsMZAAAAAPxwEON9oALcs6U2QGcRx', {action: 'homepage'}).then(function(token) {
tk = token;
document.getElementById('token').value = token;
const data = new URLSearchParams();
for(const pair of new FormData(document.querySelector('form'))){
data.append(pair[0], pair[1]);
}
fetch('send.php',{
method: 'post',
body: data,
})
.then(response => response.json())
.then(result => {
if(result['om_score'] >= 0.5){
console.log("Человек");
///////////////// Здесь отправка данных формы
}else{
console.log('бот');
}
});
});
});
});
а также сам send.php
<?php
$captcha;
if(isset($_POST['token'])){
$captcha = $_POST['token'];
}
$secretkey = '6LfjGsMZAAAAAAt9_XdcVXyScwOP-sfL8y1';
$url = 'https://www.google.com/recaptcha/api/siteverify?secret='.$secretkey.'&response='.$_POST['token'];
$response = file_get_contents($url);
$responsekeys = json_decode($response, true);
header('Content-type: application/json');
if($responsekeys["success"] && $responsekeys["score"] >= 0.5){
echo json_encode(array('success' => 'true', 'om_score' => $responsekeys["score"], 'token' => $_POST['token']));
}else {
echo json_encode(array('success' => 'false', 'om_score' => $responsekeys["score"], 'token' => $_POST['token']));
}
?>
Раньше я отправлял форму через этот код
<?php
$fio = $_POST['fio'];
$email = $_POST['email'];
$mess = $_POST['mess'];
$thema = $_POST['thema'];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$mess = htmlspecialchars($mess);
$thema = htmlspecialchars($thema);
$fio = urldecode($fio);
$thema = urldecode($thema);
$mess = urldecode($mess);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail("eg13000@gmail.com", "thema:".$thema, "fio:".$fio.". E-mail: ".$email. "mail".$mess ,"eg13000@gmail.com \r\n"))
{ header('Location: success-page.html');
} else {
header('Location: fail-page.html');
}
?>
Раньше в action формы было send.php, а в send.php вот этот код сверху, но понадобилась captcha.
Я так думаю,что код непосредственной отправки можно оставить в send.php и сделать запрос клиенту в то место, где написано "///////////////// Здесь отправка данных формы " Вопрос как его туда передать и сделать проверку, заранее спасибо тому, кто поможет.