带有验证码验证步骤

问题描述 投票:0回答:1

我讨厌寻求帮助。但是我花了很多时间试图弄清楚如何使用Recaptcha对此表格实施验证步骤。

[我了解我需要在某个地方定义私钥,但是其他大多数指南都在使用“ isset”函数,而我只是不在php的哪一部分进行此操作。

目前,该按钮显示出来并且可以检查。.但是,当我单击“提交”时,无论是否选中该框,它都会发送。 (只是在有帮助的情况下进行说明。)

谢谢,抱歉。

<?php

$to = '[email protected]';
$subject = 'CarAudioInc.com Form Message';

$errName = $errEmail = $errMessage = "";
$name = $email = $pNum = $message = "";


if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $pNum = test_input($_POST["pNum"]);
  $message = test_input($_POST["message"]);

}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if (empty($_POST["name"])) {
    $errName = "*Name field is required.";
    } else {
    $name = test_input($_POST["name"]);

        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $errName = "Invaild name."; 
        }
    }

    if (empty($_POST["email"])) {
    $errEmail = "*Email field is required.";
        } else {
    $email = test_input($_POST["email"]);

        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid E-mail."; 
        }
    }

    if (empty($_POST["message"])) {
    $errMessage = "*Message field is required.";
        } else {
    $message = test_input($_POST["message"]);
    }

$body = <<<EMAIL

Message from: $name

$message


Phone: $pNum
Email: $email

EMAIL;

$header = "From: $email";   

if (!$errName && !$errEmail && !$errMessage ) {
    if($_POST) {



        mail($to, $subject, $body, $header);

        header('Location: /sent');
    }

    }
}
?>


<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1152">
<script src="https://www.google.com/recaptcha/api.js"></script>


<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-100617570-1" ></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-100617570-1');
</script>

<!--Google meta tags -->
<title>Car Audio Inc | Contact</title>

<!--fb meta tags -->
<link rel="canonical" href="https://www.caraudioinc.com/contact" />
<link href="css/multiColumnTemplate.css" hreflang="en" rel="stylesheet" type="text/css">
<link rel="icon" href="images/favicon.png" type="image/png">
</head>

<body>
<div class="container">

  <header>
     <div class="primary_header">


    <nav class="secondary_header" id="menu">
      <ul>
     <li><a href="/">HOME</a></li>
        <li><a href="about">ABOUT</a></li>
          <li><a href="services">SERVICES</a></li>
        <li class="current"><a href="contact">CONTACT</a></li>
      </ul>
    </nav>

  </header>

 <div class="contactForm">
  <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"><br>

    <label for="name">Name&nbsp;&nbsp;</label><span class="error"><?php echo $errName; ?></span><br>
    <input type="text" id="name" name="name" value="<?php echo $name;?>"><br><br>



      <label for="email">Email&nbsp;&nbsp;</label><span class="error"><?php echo $errEmail; ?></span><br>
    <input type="email" id="email" name="email" value="<?php echo $email;?>"><br><br>



      <label for="pNum">Phone Number (optional)<br></label>
    <input type="tel" id="pNum" name="pNum" value="<?php echo $pNum;?>"><br><br>


      <label for="message">Message&nbsp;&nbsp;</label><span class="error"><?php echo $errMessage; ?></span><br>
    <textarea id="message" name="message" style="height:100px"><?php echo $message;?></textarea>

     <div class="g-recaptcha" data-sitekey="6LcR-DQUAAAAAB2cXajVPi7lpFEZ_z8vZrS97ZXo"></div><br>



    <input type="submit" value="Submit">
    </form>


  <footer class="secondary_header footer">
    <div class="copyright">&copy; Car Audio Inc 2020, All Rights Reserved.</div>

  </footer>

</div>
</body>
</html>
php html recaptcha
1个回答
0
投票

您可以在isset()条件中将if()功能设置为

if (isset($_POST)){...} 

通过这意味着如果发布了某些内容,或者如果$_POST os设置为某个值,则代码会向前移动。

但是按照您前面提到的方式,它只是检查表单是否已发布,并且每次发布表单时都没有任何值,并且代码正在进一步移动。

© www.soinside.com 2019 - 2024. All rights reserved.