PHP表单,MailFonction和Google reCaptcha验证问题 [英] PHP Form, MailFonction and Google reCaptcha Validation Issue

查看:181
本文介绍了PHP表单,MailFonction和Google reCaptcha验证问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个与邮件功能验证方式相关的问题。



Captcha Success正在正常工作。当验证码失败时,我在表单页面中收到了正确的消息,但PHP编程仍然允许发送电子邮件。我只需要知道如何设置只有成功部分的邮件功能。



任何人都可以帮我修复reCaptcha验证吗?



谢谢。



以下是PHP源代码:

 <?php 
if(isset($ _ POST [submit])){

$ url ='https://www.google.com/recaptcha/api/siteverify';
$ privatekey =MASKED;

$ response = file_get_contents($ url。?secret =。$ privatekey。& response =。$ _ POST ['g-recaptcha-response']。& remoteip = 。$ _ SERVER [ 'REMOTE_ADDR']);
$ data = json_decode($ response);

if(isset($ data-> success)AND $ data-> success == true){

header('Location:appel_de_service.php?CaptchaPass =真正');

} else {

header('Location:appel_de_service.php?CaptchaFail = True');

}

$ to =MASKED;
$ from = $ _POST ['courriel'];
$ from_name = $ _POST ['nom_responsable'];
$ subject =接待服务;
$ nom_compagnie = $ _POST ['nom_compagnie']; //必需
$ adresse = $ _POST ['adresse']; //必需
$ ville = $ _POST ['ville'];
$ province = $ _POST ['province'];
$ code_postale = $ _POST ['code_postale'];
$ nom_responsable = $ _POST ['nom_responsable'];
$ courriel = $ _POST ['courriel'];
$ telephone = $ _POST ['telephone'];
$ marque = $ _POST ['marque'];
$ numero_modele = $ _POST ['numero_modele'];
$ garantie = $ _POST ['garantie'];
$ description = $ _POST ['description'];
$ disponibilite = $ _POST ['disponibilite']; //必需
$ coordonnees = $ _POST ['coordonnees']; //必需

$ headers ='MIME-Version:1.0'。 \r\\\
;
$ headers。='Content-type:text / html; charset = iso-8859-1'。 \r\\\
;
$ headers。=回复:$ courriel;

$ message =
<!DOCTYPE HTML PUBLIC \ - // W3C // DTD HTML 4.01 Transitional // EN \>
< html> ;
< head>
< title> Appel de service(rempli sur le site internet)< / title>
< style type = \text / css \ >
h1,h2,h3,h4,h5,h6 {
font-family:Cambria,\Hoefler Text \,\Liberation Serif \,Times,\ Times New Roman \,serif;
color:#272727;
}


< body>

< table width = \500 \border = \1 \cellpadding = \5 \cellspacing = \2 \>
< tbody>
< tr>
< td colspan = \2 \align = \left \valign = \middle \bgcolor = \#84BDEC \> ;< h3>< h3>>< h3>>< h3>< / gt>
< tr>< / td> 155 \align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Nom de la compagnie< / td>
< td width = \313 \align = \left \valign = \middle \> $ nom_compagnie< / td>
< / tr>
< tr> ;
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Adresse < / td>
< td align = \left \valign = \middle \> $ adresse< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Ville< / td>
< td align = \left \valign = \middle \> $ ville< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \>省份< / td>
< td align = \left \valign = \middle \> $ province< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \>代码后缀< / td>
< td align = \left \valign = \middle \> $ code_postale< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Nom du responsable< / td>
< td align = \left \valign = \middle \> $ nom_responsable< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \> T& eacute; l& eacute; phone< / td>
< td align = \left \valign = \middle \> $ telephone< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Adresse courriel< / td>
< td align = \left \valign = \middle \> $ courriel< / td>
< / tr>
< / tbody>
< / table>
< br>
< tbody>
< tr>
< td colspan = \2 \align = \left \valign = \middle \bgcolor = \#84BDEC \>< h3>信息产品< / h3>< / td>
< / tr>
< tr>
< td width = \155 \align = \left \valign = \middle \bgcolor = \#D5D5D5 \>马克< / td> ;
< td width = \313 \align = \left \valign = \middle \> $ marque< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \\>> Num& eacute; ro de modè le < TD>
< td align = \left \valign = \middle \> $ numero_modele< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Garantie< / td>
< td align = \left \valign = \middle \> $ garantie< / td>
< / tr>
< tr bgcolor = \#D5D5D5 \>
< td colspan = \2 \align = \left \valign = \middle \>说明du probl& egrave; me:< / td>
< / tr>
< tr>
< td height = \75 \colspan = \2 \align = \left \valign = \top \> $ description< / td> ;
< / tr>
< / tbody>
< / table>
< br>
< tbody>
< tr>
< td colspan = \2 \align = \left \valign = \middle \bgcolor = \#84BDEC \>< h3> & eacute; f& eacute; rences pour le rendez-vous< / h3>< / td>
< / tr>
< tr>
< td width = \155 \align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Disponibilit& eacute; < / TD>
< td width = \313 \align = \left \valign = \middle \> $ disponibilite< / td>
< / tr>
< tr>
< td align = \left \valign = \middle \bgcolor = \#D5D5D5 \> Coordonn& eacute; es< / td>
< td align = \left \valign = \middle \> $ coordonnees< / td>
< / tr>
< / tbody>
< / table>
< / body>
< / html>
;

//发送HTML电子邮件时总是设置内容类型

邮件($ to,$ subject,$ message,$ headers);


$ b $>


解决方案

解决了。问题在于PHP的构造if()和else()需要在数据集合填充到表单后。



以下是正确的代码:

 <?php 
if(isset($ _ POST [submit]] )){

$ url ='https://www.google.com/recaptcha/api/siteverify';
$ privatekey =PRIVATE_KEY;

$ response = file_get_contents($ url。?secret =。$ privatekey。& response =。$ _ POST ['g-recaptcha-response']);
$ data = json_decode($ response) ;

if(isset($ data-> success)AND $ data-> success == true){

$ to =who@domain.com ;
$ from = $ _POST ['courriel'];
$ from_name = $ _POST ['nom_responsable'];
$ subject =Re提供服务;
$ nom_compagnie = $ _POST ['nom_compagnie'];
$ adresse = $ _POST ['adresse'];
$ ville = $ _POST ['ville'];
$ province = $ _POST ['province'];
$ code_postale = $ _POST ['code_postale'];
$ nom_responsable = $ _POST ['nom_responsable'];
$ courriel = $ _POST ['courriel'];
$ telephone = $ _POST ['telephone'];
$ marque = $ _POST ['marque'];
$ numero_modele = $ _POST ['numero_modele'];
$ garantie = $ _POST ['garantie'];
$ description = $ _POST ['description'];
$ disponibilite = $ _POST ['disponibilite'];
$ coordonnees = $ _POST ['coordonnees'];

$ headers ='MIME-Version:1.0'。 \r\\\
;
$ headers。='Content-type:text / html; charset = UTF-8'。 \r\\\
;
$ headers。=回复:$ courriel;

$ message =
;
$ b $ if(mail($ to,$ subject,$ message,$ headers)){
header('Location:appel_de_service.php?CaptchaPass');

} else {
echo无法发送邮件;
}
} else {
header('Location:appel_de_service.php?CaptchaFail');
}

} else {
header('Location:appel_de_service.php?CaptchaError');

}

?>


I have a issue with the way ive program the captcha verification with the mail fonction.

The Captcha Success are working fine. When the captcha fail, i got the proper message into the form page, but PHP programation still let the email sent. I just need to know how can i set the mail function with the success part only.

Can anyone help me fix the reCaptcha validation?

Thank you.

Here is the PHP source code:

<?php
 if (isset($_POST["submit"])) {

     $url = 'https://www.google.com/recaptcha/api/siteverify';
    $privatekey = "MASKED";

    $response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
    $data = json_decode($response);

    if(isset($data->success) AND $data->success==true){

        header('Location: appel_de_service.php?CaptchaPass=True');

    }else{

        header('Location: appel_de_service.php?CaptchaFail=True');

    }

 $to = "MASKED";
 $from = $_POST['courriel'];
 $from_name = $_POST['nom_responsable'];
 $subject = "Reception d'un appel de service ";
 $nom_compagnie = $_POST['nom_compagnie']; // required
 $adresse = $_POST['adresse']; // required
 $ville = $_POST['ville'];
 $province = $_POST['province'];
 $code_postale = $_POST['code_postale'];
 $nom_responsable = $_POST['nom_responsable'];
 $courriel = $_POST['courriel'];
 $telephone = $_POST['telephone'];
 $marque = $_POST['marque'];
 $numero_modele = $_POST['numero_modele'];
 $garantie = $_POST['garantie'];
 $description = $_POST['description'];              
 $disponibilite = $_POST['disponibilite']; // required
 $coordonnees = $_POST['coordonnees']; // required

 $headers  = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .= "Reply-to: $courriel";

 $message = "
 <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Appel de service (rempli sur le site internet)</title>
<style type=\"text/css\">
h1,h2,h3,h4,h5,h6 {
    font-family: Cambria, \"Hoefler Text\", \"Liberation Serif\", Times, \"Times New Roman\", serif;
    color: #272727;
}
</style>
</head>
<body>
<h2 style=\"font-size: 1.25em; font-family: Gotham, ʼHelvetica Neueʼ, Helvetica, Arial, sans-serif;\">Vous avez re&ccedil;u une demande d'appel de service en ligne.</h2>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
  <tbody>
    <tr>
      <td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Informations sur l'adresse du service</h3></td>
    </tr>
    <tr>
      <td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Nom de la compagnie</td>
      <td width=\"313\" align=\"left\" valign=\"middle\">$nom_compagnie</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Adresse</td>
      <td align=\"left\" valign=\"middle\">$adresse</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Ville</td>
      <td align=\"left\" valign=\"middle\">$ville</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Province</td>
      <td align=\"left\" valign=\"middle\">$province</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Code postale</td>
      <td align=\"left\" valign=\"middle\">$code_postale</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Nom du responsable</td>
      <td align=\"left\" valign=\"middle\">$nom_responsable</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">T&eacute;l&eacute;phone</td>
      <td align=\"left\" valign=\"middle\">$telephone</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Adresse courriel</td>
      <td align=\"left\" valign=\"middle\">$courriel</td>
    </tr>
  </tbody>
</table>
<br>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
  <tbody>
    <tr>
      <td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Informations sur le produit</h3></td>
    </tr>
    <tr>
      <td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Marque</td>
      <td width=\"313\" align=\"left\" valign=\"middle\">$marque</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Num&eacute;ro de mod&egrave;le</td>
      <td align=\"left\" valign=\"middle\">$numero_modele</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Garantie</td>
      <td align=\"left\" valign=\"middle\">$garantie</td>
    </tr>
    <tr bgcolor=\"#D5D5D5\">
      <td colspan=\"2\" align=\"left\" valign=\"middle\">Description du probl&egrave;me :</td>
    </tr>
    <tr>
      <td height=\"75\" colspan=\"2\" align=\"left\" valign=\"top\">$description</td>
    </tr>
  </tbody>
</table>
<br>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
  <tbody>
    <tr>
      <td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Pr&eacute;f&eacute;rences pour le rendez-vous</h3></td>
    </tr>
    <tr>
      <td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Disponibilit&eacute;</td>
      <td width=\"313\" align=\"left\" valign=\"middle\">$disponibilite</td>
    </tr>
    <tr>
      <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Coordonn&eacute;es</td>
      <td align=\"left\" valign=\"middle\">$coordonnees</td>
    </tr>
  </tbody>
</table>
</body>
</html>
 ";

 // Always set content-type when sending HTML email

 mail($to, $subject, $message, $headers);

 }

 ?> 

解决方案

Resolved. The problem was the construction of the PHP if() and else() need to be after the Data collection filled into the form.

Here are the proper code :

<?php
if (isset($_POST["submit"])) {

    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $privatekey = "PRIVATE_KEY";

    $response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']);
    $data = json_decode($response);

    if(isset($data->success) AND $data->success==true){

        $to = "who@domain.com";
        $from = $_POST['courriel'];
        $from_name = $_POST['nom_responsable'];
        $subject = "Reception d'un appel de service ";
        $nom_compagnie = $_POST['nom_compagnie'];
        $adresse = $_POST['adresse'];
        $ville = $_POST['ville'];
        $province = $_POST['province'];
        $code_postale = $_POST['code_postale'];
        $nom_responsable = $_POST['nom_responsable'];
        $courriel = $_POST['courriel'];
        $telephone = $_POST['telephone'];
        $marque = $_POST['marque'];
        $numero_modele = $_POST['numero_modele'];
        $garantie = $_POST['garantie'];
        $description = $_POST['description'];              
        $disponibilite = $_POST['disponibilite'];
        $coordonnees = $_POST['coordonnees'];

        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
        $headers .= "Reply-to: $courriel";

        $message = "
        ";

        if(mail($to, $subject, $message, $headers)){
                    header('Location: appel_de_service.php?CaptchaPass');

        }else{
            echo "mail could not be sent";
        }
    }else{
                header('Location: appel_de_service.php?CaptchaFail');
    }

}else{
    header('Location: appel_de_service.php?CaptchaError');

}

?> 

这篇关于PHP表单,MailFonction和Google reCaptcha验证问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆