Этот вопрос закрыт для ответов, так как повторяет вопрос Как вставить php в js?
@Kryptonit

Как передать данные формы на сервер php?

Чуть-чуть недопонимаю как передать данные из 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 и сделать запрос клиенту в то место, где написано "///////////////// Здесь отправка данных формы " Вопрос как его туда передать и сделать проверку, заранее спасибо тому, кто поможет.
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы