dousi4148 2017-02-20 14:18
浏览 81
已采纳

谷歌Recaptcha形式的未定义变量?

I am trying to get a form with google's Recaptcha to work. Below is the code that I have so far. What am I doing wrong?? When filling in the form and clicking the SEND button i get the notices below. It seems it has to do with this section of my PHP code:

          $to = 'eddyhilhorst@fotel.eu';
        $subject = 'A new contact form has been submitted';
        $htmlContent = "
            <h1>Contact request details</h1>
            <p>'.$first_name.' From:</b>".$gender." ".$first_name." ".$last_name."</p>
            <p><b>Company name: </b>".$company_name."</p>
            <p><b>Customer number: </b>".$customer_number."</p>
            <p><b>Email address: </b>".$email_address."</p>
            <p><b>Telephone number: </b>".$telephone_number."</p>
            <p><b>Message subject: </b>".$message_subject."</p>
            <p><b>Message: </b>".$message_content."</p>
        ";
        // Always set content-type when sending HTML email
        $headers = "MIME-Version: 1.0" . "
";
        $headers .= "Content-type:text/html;charset=UTF-8" . "
";
        // More headers
        $headers .= 'From:'.$gender.' '.$first_name.' '.$last_name.' <'.$email.'>' . "
";
        //send email
        @mail($to,$subject,$htmlContent,$headers);

Notice: Undefined variable: gender in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 26

Notice: Undefined variable: first_name in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 26

Notice: Undefined variable: last_name in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 26

Notice: Undefined variable: company_name in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 27

Notice: Undefined variable: customer_number in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 28

Notice: Undefined variable: email_address in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 29

Notice: Undefined variable: telephone_number in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 30

Notice: Undefined variable: message_subject in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 31

Notice: Undefined variable: message_content in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 32

Notice: Undefined variable: gender in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 38

Notice: Undefined variable: first_name in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 38

Notice: Undefined variable: last_name in /home/sites/www.hildesign.nl/web/fotelcontactform/form.php on line 38

autosize(document.querySelectorAll('#message_content'));



var validator = $("#comment_form").validate({
  ignore: [],
  rules: {
    gender: {
      required: true,
    },
    first_name: {
      required: true,
      minlength: 2
    },
    last_name: {
      required: true,
      minlength: 2
    },
    email: {
      required: true,
      email: true,
      minlength: 4
    },
    email_again: {
      equalTo: '[name="entry[email]"]'
    },
    message_subject: {
      required: true,
      minlength: 2
    },
    message: {
      required: true,
      minlength: 4
    },
    hiddenRecaptcha: {
      required: function() {
        if (grecaptcha.getResponse() == '') {
          return true;
        } else {
          return false;
        }
      }
    }
  }
});
html {
  text-align: center
}

body {
  display: inline-block;
  margin: 0px auto;
  text-align: left;
}

@font-face {
  font-family: Questrial;
  src: url(Questrial-Regular.otf);
}

div {
  font-family: Questrial;
}

input {
  font-family: Questrial;
}

text-area {
  font-family: Questrial;
}

span {
  font-family: Questrial;
}

p {
  font-family: Questrial;
}

form {
  font-family: Questrial;
}

#comment_form {
  width: 302px;
}

.label-radio {
  font-size: 0.8em;
  color: #d8e3e6;
  margin-right: 10px;
  font-family: questrial;
}

.inputfield3 {
  height: 33px;
  max-height: 33px;
  width: 302px;
  border-radius: 16px;
  margin-top: -10px;
  margin-bottom: 17px;
  padding: 0px 10px 0px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

.inputfield2 {
  height: 33px;
  max-height: 33px;
  width: 302px;
  border-radius: 16px;
  margin-top: -10px;
  margin-bottom: 0px;
  padding: 0px 10px 0px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

.textareafield {
  max-height: 350px;
  width: 302px;
  max-width: 302px;
  border-radius: 16px;
  margin-top: -10px;
  margin-bottom: 17px;
  padding: 10px 10px 10px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

#g-recaptcha-outer {
  width: 302px;
  height: 72px;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  border-radius: 16px;
  margin: -10px auto 20 auto;
}

#recaptcha-header {
  margin: 30px 0px -15px 0px;
  color: #d8e3e6;
  font-size: 1.0em;
  font-family: questrial;
  font-size: 0.8em;
  letter-spacing: -0.03em;
}

#contact_submit_button {
  display: block;
  text-decoration: none;
  margin: 10px auto 80px auto;
  width: 230px;
  height: 33px;
  padding: 0px 15px 0px 15px;
  background-color: rgb(0, 157, 233);
  color: #ffffff;
  border-radius: 16px;
  border: none;
  outline: none;
  font-family: questrial;
  font-size: 1em;
}

.requiredmark {
  margin: 0px 0px 0px 295px;
  display: inline-block;
  color: #d8e3e6;
  padding: 20px 0px 0px 0px;
}

.requiredmark2 {
  margin: -39px 0px 0px 295px;
  display: inline-block;
  color: #d8e3e6;
  padding: 20px 0px 0px 0px;
}

.requiredmark-radio {
  margin: 20px 0px 0px 0px;
  display: inline-block;
  color: #d8e3e6;
  font-family: questrial;
}

.error {
  display: none;
}

.error_show {
  color: red;
}

input.invalid,
textarea.invalid {
  border: 1px solid red;
}

input.valid,
textarea.valid {}

label.error {
  margin-top: -10px;
  margin-bottom: 30px;
  float: none;
  color: red;
  vertical-align: top;
  display: block;
  font-family: Questrial;
}

​ #hiddenRecaptcha-error {
  margin-top: 65px!important;
  margin-bottom: 30px;
  float: none;
  color: red;
  vertical-align: top;
  display: block;
  font-family: Questrial;
}

​ .gender {
  border-radius: 16px;
  margin-top: 5px;
  margin-bottom: 7px;
  padding: 0px 10px 0px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

#gender-error {
  float: right;
  margin-bottom: 0px!important;
  margin-top: 20px!important
}
<?php
if(isset($_POST['submit']) && !empty($_POST['submit'])):
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
        //your site secret key
        $secret = 'MySecretKey_is_here';
        //get verify response data
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        if($responseData->success):
            //contact form submission code
            $name = !empty($_POST['gender'])?$_POST['gender']:'';
            $email = !empty($_POST['first_name'])?$_POST['first_name']:'';
            $message = !empty($_POST['last_name'])?$_POST['last_name']:'';
            $name = !empty($_POST['company_name'])?$_POST['company_name']:'';
            $email = !empty($_POST['customer_number'])?$_POST['customer_number']:'';
            $message = !empty($_POST['email'])?$_POST['email']:'';
            $message = !empty($_POST['email_again'])?$_POST['email_again']:'';
            $name = !empty($_POST['telephone_number'])?$_POST['telephone_number']:'';
            $email = !empty($_POST['message_subject'])?$_POST['message_subject']:'';
            $message = !empty($_POST['message_content'])?$_POST['message_content']:'';
            
            $to = 'eddyhilhorst@fotel.eu';
            $subject = 'A new contact form has been submitted';
            $htmlContent = "
                <h1>Contact request details</h1>
                <p>'.$first_name.' From:</b>".$gender." ".$first_name." ".$last_name."</p>
                <p><b>Company name: </b>".$company_name."</p>
                <p><b>Customer number: </b>".$customer_number."</p>
                <p><b>Email address: </b>".$email_address."</p>
                <p><b>Telephone number: </b>".$telephone_number."</p>
                <p><b>Message subject: </b>".$message_subject."</p>
                <p><b>Message: </b>".$message_content."</p>
            ";
            // Always set content-type when sending HTML email
            $headers = "MIME-Version: 1.0" . "
";
            $headers .= "Content-type:text/html;charset=UTF-8" . "
";
            // More headers
            $headers .= 'From:'.$gender.' '.$first_name.' '.$last_name.' <'.$email.'>' . "
";
            //send email
            @mail($to,$subject,$htmlContent,$headers);
            
            $succMsg = 'Your contact request have submitted successfully.';
        else:
            $errMsg = 'Robot verification failed, please try again.';
        endif;
    else:
        $errMsg = 'Please click on the reCAPTCHA box.';
    endif;
else:
    $errMsg = '';
    $succMsg = '';
endif;
?>

<head>
  <script src='https://www.google.com/recaptcha/api.js'></script>
  <script src="https://assets.webshopapp.com/photographycoursetour/autosize.js?2" type="text/javascript"></script>
  <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
  <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.js"></script>
  <script src="{{ 'iframeresizer-min.js' | url_asset }}" type="text/javascript"></script>
  <script src="https://assets.webshopapp.com/photographycoursetour/iframeresizer-contentwindow-min.js" type="text/javascript"></script>
</head>

<body>

  <form id="comment_form" action="form.php" method="post">

    <div class="compulsoryfield">
      <input class="gender" type="radio" name="gender" value="Mr" required><label class="label-radio">Mr.</label>
      <input class="gender" type="radio" name="gender" value="Ms" required><label class="label-radio">Ms.</label>
      <span class="requiredmark-radio">*</span>
    </div>

    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="first_name" name="first_name" class="inputfield3" type="text" placeholder="first name" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <input id="last_name" name="last_name" class="inputfield3" type="text" placeholder="last name" required>
    </div>

    <input class="inputfield3" type="text" name="company_name" placeholder="company name (if applicable)">
    <input class="inputfield3" type="text" name="customer_number" placeholder="customer number (on invoice if available)">
    <br>

    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="email" name="email" class="inputfield3" type="email" placeholder="email address" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <input id="email_again" name="emai_again" class="inputfield3" type="email" placeholder="re-enter email address to confirm" required></div>


    <input class="inputfield3" type="text" name="telephone_number" placeholder="telephone number (country code included)">
    <br>
    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="message_subject" name="message_subject" class="inputfield3" type="text" placeholder="subject of message" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <textarea id="message_content" name="message_content" class="textareafield" type="text" placeholder="add your message here" rows="8" cols="39" required></textarea></div>


    <p id="recaptcha-header">before sending, please show us you're real:</p>

    <div><span class="requiredmark">*</span>
      <div id="g-recaptcha-outer" class="compulsoryfield2">
        <div class="g-recaptcha" data-sitekey="6LdBLBUUAAAAAI6eMRYRaA5B-EN_UDKGzwHtNMU1" required></div>

      </div>
      <input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha">
      <br><br>
      <input id="contact_submit_button" type="submit" name="submit" value="SEND" onclick="myFunction()">

  </form>

  <div class="errMsg">PLease click on the Recaptcha box.</div>

</div>
  • 写回答

1条回答 默认 最新

  • dongqiang2069 2017-02-20 14:35
    关注

    The problem is that you're trying to use values from variables that don't exist.

    It looks like you're assigning your POSTed values to the incorrect variables. Look at this section of code -

    //contact form submission code
      $name = !empty($_POST['gender'])?$_POST['gender']:'';
      $email = !empty($_POST['first_name'])?$_POST['first_name']:'';
      $message = !empty($_POST['last_name'])?$_POST['last_name']:'';
      $name = !empty($_POST['company_name'])?$_POST['company_name']:'';
      $email = !empty($_POST['customer_number'])?$_POST['customer_number']:'';
      $message = !empty($_POST['email'])?$_POST['email']:'';
      $message = !empty($_POST['email_again'])?$_POST['email_again']:'';
      $name = !empty($_POST['telephone_number'])?$_POST['telephone_number']:'';
      $email = !empty($_POST['message_subject'])?$_POST['message_subject']:'';
      $message = !empty($_POST['message_content'])?$_POST['message_content']:'';
    
      $to = 'eddyhilhorst@fotel.eu';
      $subject = 'A new contact form has been submitted';
      $htmlContent = "
        <h1>Contact request details</h1>
        <p>'.$first_name.' From:</b>".$gender." ".$first_name." ".$last_name."</p>
        <p><b>Company name: </b>".$company_name."</p>
        <p><b>Customer number: </b>".$customer_number."</p>
        <p><b>Email address: </b>".$email_address."</p>
        <p><b>Telephone number: </b>".$telephone_number."</p>
        <p><b>Message subject: </b>".$message_subject."</p>
        <p><b>Message: </b>".$message_content."</p>
      ";
    

    You are assigning values for "gender" to the variable $name and the value for "first_name" to $email. If you update your variable names to match the POSTed fields your code should work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?