[PHP] Inserire google recaptcha in uno form contatti

Discussione in 'PHP' iniziata da luigi777, 12 Agosto 2017.

  1. luigi777

    luigi777 Utente Attivo

    Registrato:
    14 Febbraio 2008
    Messaggi:
    995
    Mi Piace Ricevuti:
    0
    Punteggio:
    16
    Sesso:
    Maschio
    Località:
    Massa, Italy
    Salve, vorrei inserire il google Invisible reCAPTCHA .. ho trovato questo esempio:
    https://github.com/geordyjames/google-Invisible-reCAPTCHA

    Lo inserito nel mio codice .. ma se provo mi da:
    An Error Occured and Error code is :missing-input

    questo è il codice:
    PHP:
    <?php
    include("inc.php");
    include(
    "include/inc_browser.php");
    include(
    "include/inc_ipinfo.io.php");
    $title ="Contatti";
    $layout = new layout;
    $layout->setTitle($title);
    $layout->startBody();
    ?>
    <h1 class="title_page">Contatti</h1>
    <div id="contact">
        <fieldset>
            <?php
            
    if(isset($_POST["invia"]))
            {
                
    $nome $_POST["nome"];
                
    $cognome $_POST["cognome"];
                
    $oggetto $_POST["oggetto"];
                
    $messaggio =$_POST["messaggio"];
                
    $email $_POST["email"];

                if(empty(
    $nome))
                {
                    
    $error "Non hai inserito il nome";
                }
                elseif(empty(
    $cognome))
                {
                    
    $error "Non hai inserito il cognome";
                }
                elseif(empty(
    $oggetto))
                {
                    
    $error "Non hai inserito l'oggetto";
                }
                elseif(empty(
    $email))
                {
                    
    $error "Inserire il l'email";
                }
                elseif(!
    valid_email($email))
                {
                    
    $error "Inserire la tua email valida";
                }

                elseif(empty(
    $messaggio))
                {
                    
    $error "Non hai inserito il messaggio";
                }
                else

                {
                    require(
    "classs/class.google.php");
                    
    $recaptcha $_POST['g-recaptcha-response'];
                    
    $object = new Recaptcha();
                    
    $response $object->verifyResponse($recaptcha);
                    if(isset(
    $response['success']) and $response['success'] != true) {
                        echo 
    "An Error Occured and Error code is :".$response['error-codes'];
                    }else {
                        require(
    "classs/class.phpmailer.php");
                        require(
    "classs/class.smtp.php");

                        
    $mail = new PHPMailer();

                        
    $mail->IsSMTP(); // abilitiamo l'SMTP
                        
    $mail->SMTPDebug 0;  // debug: 1 = solo messaggi, 2 = errori e messaggi
                        
    $mail->SMTPAuth true;  // abilitiamo l'autenticazione
                        
    $mail->SMTPSecure 'ssl'// abilitiamo il protocollo ssl richiesto per Gmail
                        
    $mail->Host $admin_email_host// ecco il server smtp di google
                        
    $mail->Port $admin_email_port// la porta che dobbiamo utilizzare



                        // Inseriamo i dati della casella che utilizzeremo per spedire

                        
    $mail->Username $admin_email_username;

                        
    $mail->Password $admin_email_password;


                        
    $mail->From $_POST["email"];

                        
    $mail->FromName $_POST["nome"]." ".$_POST["cognome"];

                        
    // Qui inseriamo l'indirizzo a cui recapitare le email spedite tramite il form

                        
    $mail->AddReplyTo($_POST["email"], $_POST["nome"]."  ".$_POST["cognome"]);


                        
    $mail->AddAddress($admin_email);

                        
    $mail->IsHTML(true);

                        
    $messaggio "Nome:&nbsp;&nbsp;"$_POST["nome"]."<br />";
                        
    $messaggio .= "Cognome:&nbsp;&nbsp;"$_POST["cognome"]."<br />";
                        
    $messaggio .= "Indirizzo Ip:&nbsp;&nbsp;"$_SERVER["REMOTE_ADDR"]."<br />";
                        
    $browser getBrowser($_SERVER['HTTP_USER_AGENT']);
                        
    $ip $_SERVER["REMOTE_ADDR"];
                        
    $loc _ipinfo($ip);
                        
    $messaggio .= "Location: ".$loc"<br />";
                        
    $messaggio .= "Browser:&nbsp;&nbsp;"$browser."&nbsp;&nbsp;<br />";
                        
    $messaggio .= "Messaggio: <br />"nl2br(replace_text($_POST["messaggio"]))."<br />";
                        
    $messaggio .= "=====================================================================";

                        
    $mail->Body$messaggio;

                        
    $oggetto "Richiesta da ".$www_email." : ".$_POST["oggetto"]."";

                        
    $mail->Subject=$oggetto;


                        if(
    $mail->Send()){

                            
    $msg "ok, attendere prego..al ritorno della home page. ";

                            
    redirect("index.php",4);

                        }else{

                            
    $error "Errore invio mail";

                        }
                    }
                }
            }
            
    $config = require('config.php');
            
    $nome = (isset($_POST["nome"])) ? trim(($_POST["nome"])): '';
            
    $cognome = (isset($_POST["cognome"])) ? trim(($_POST["cognome"])): '';
            
    $oggetto = (isset($_POST["oggetto"])) ? trim(($_POST["oggetto"])): '';
            
    $messaggio = (isset($_POST["messaggio"])) ? trim(($_POST["messaggio"])): '';
            
    $email = (isset($_POST["email"])) ? trim(($_POST["email"])): '';
            
    ?>
            <script src='https://www.google.com/recaptcha/api.js'></script>
             <script>
           function onSubmit() {
             document.getElementById("contact-form").submit();
           }
        </script>
            <?php
            
    if(isset($error)){ echo '<p class="info_error">'.$error.'</p>';}
            if(isset(
    $msg)){ echo $msg;} else {
                
    ?>           
                <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" id="contact-form">
                    <p>Nome</p>
                    <p><input type="text" name="nome"  class="form-control" value="<?php if(isset($_POST['nome'])){echo htmlspecialchars($_POST['nome']);}else { echo htmlspecialchars($nome); }?>" /></p>
                    <p>Cognome</p>
                    <p><input type="text" name="cognome" class="form-control"  value="<?php if(isset($_POST['cognome'])){echo htmlspecialchars($_POST['cognome']);}else { echo htmlspecialchars($cognome); }?>"  /></p>
                    <p>Oggetto</p>
                    <p><select name="oggetto" class="form-control">
                        <option value="Informazioni"   <?php if ($oggetto == "Informazioni") echo ' selected' ?>>Informazioni</option>
                        <option value="Richiesta di contatto"    <?php if ($oggetto == "Richiesta di contatto") echo ' selected' ?>>Richiesta di contatto</option>
                        <option value="Richiesta Curriculum Vitae"    <?php if ($oggetto == "Richiesta Curriculum Vitae") echo ' selected' ?>>Richiesta Curriculum Vitae</option>
                        <option value="Altro"    <?php if ($oggetto == "Altro") echo ' selected' ?>>Altro</option>
                    </select>
                </p>
                <p>Email</p>
                <p><input type="text" name="email" class="form-control" size="40" value="<?php if(isset($_POST['email'])){echo htmlspecialchars($_POST['email']);}else { echo htmlspecialchars($email); }?>" /></p>
                <p>Messaggio</p>
                <p><textarea rows="10" cols="40"  class="form-control"name="messaggio"><?php if(isset($_POST['messaggio'])){echo $_POST['messaggio'];}else { echo $messaggio; }?></textarea></p>
                <p><button class="g-recaptcha"     data-sitekey="<?php echo $config['client-key']; ?>" data-callback="onSubmit"></button></p>
                <p><input type="submit" name="invia" value="invia"></p>
            </form>
        <?php ?>
    </fieldset>
    </div>
    <?php
    $layout
    ->endBody();
    echo 
    $layout->render('theme/'.$theme.'/template.php');
    ?>
    Le chiavi le ho creato adesso .. per caso devo aspettare le chiavi che si attivano?
    Grazie mille e buon sabato.
     
  2. luigi777

    luigi777 Utente Attivo

    Registrato:
    14 Febbraio 2008
    Messaggi:
    995
    Mi Piace Ricevuti:
    0
    Punteggio:
    16
    Sesso:
    Maschio
    Località:
    Massa, Italy
    risolto.. era l'engine template che non andava bene e ho dovuto cambiare metodo..
    vi posto il codice anche se non avete altre parti del codice:

    PHP:
    <?php
    /* http://www.onlinecode.org/google-invisible-recaptcha-using-php/ */
    include("inc.php");
    include(
    "include/inc_browser.php");
    include(
    "include/inc_ipinfo.io.php");
    $title ="Contatti";
    include(
    "theme/".$theme."/header.php");
    ?>
    <div class="container">
      <div class="row">
        <div class="col-md-12">
          <?php
          
    echo "<div id=\"f\">\n";
          echo 
    "<div id=\"pages\">\n";
          
    ?>

          <h1 class="title_page">Contatti</h1>
          <div id="contact">
            <fieldset>
              <?php
              
    if($_SERVER["REQUEST_METHOD"] === "POST")
              {
                
    $nome $_POST["nome"];
                
    $cognome $_POST["cognome"];
                
    $oggetto $_POST["oggetto"];
                
    $messaggio =$_POST["messaggio"];
                
    $email $_POST["email"];

                if(empty(
    $nome))
                {
                  
    $error "Non hai inserito il nome";
                }
                elseif(empty(
    $cognome))
                {
                  
    $error "Non hai inserito il cognome";
                }
                elseif(empty(
    $oggetto))
                {
                  
    $error "Non hai inserito l'oggetto";
                }
                elseif(empty(
    $email))
                {
                  
    $error "Inserire il l'email";
                }
                elseif(!
    valid_email($email))
                {
                  
    $error "Inserire la tua email valida";
                }

                elseif(empty(
    $messaggio))
                {
                  
    $error "Non hai inserito il messaggio";
                }
                else

                {
                  
    //verify captcha code process
                  // add your secret key
                  
    $google_recaptcha_secret $google_secretkey;

                  
    // pass secret key in google recaptcha api url
                  
    $api_response file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$google_recaptcha_secret."&response=".$_POST['g-recaptcha-response']);

                  
    // json decode for data
                  
    $api_response json_decode($api_responsetrue);

                  if(
    $api_response["success"] === true)
                  {

                    require(
    "classs/class.phpmailer.php");
                    require(
    "classs/class.smtp.php");

                    
    $mail = new PHPMailer();

                    
    $mail->IsSMTP(); // abilitiamo l'SMTP
                    
    $mail->SMTPDebug 0;  // debug: 1 = solo messaggi, 2 = errori e messaggi
                    
    $mail->SMTPAuth true;  // abilitiamo l'autenticazione
                    
    $mail->SMTPSecure 'ssl'// abilitiamo il protocollo ssl richiesto per Gmail
                    
    $mail->Host $admin_email_host// ecco il server smtp di google
                    
    $mail->Port $admin_email_port// la porta che dobbiamo utilizzare



                    // Inseriamo i dati della casella che utilizzeremo per spedire

                    
    $mail->Username $admin_email_username;

                    
    $mail->Password $admin_email_password;


                    
    $mail->From $_POST["email"];

                    
    $mail->FromName $_POST["nome"]." ".$_POST["cognome"];

                    
    // Qui inseriamo l'indirizzo a cui recapitare le email spedite tramite il form

                    
    $mail->AddReplyTo($_POST["email"], $_POST["nome"]."  ".$_POST["cognome"]);


                    
    $mail->AddAddress($admin_email);

                    
    $mail->IsHTML(true);

                    
    $messaggio "Nome:&nbsp;&nbsp;"$_POST["nome"]."<br />";
                    
    $messaggio .= "Cognome:&nbsp;&nbsp;"$_POST["cognome"]."<br />";
                    
    $messaggio .= "Indirizzo Ip:&nbsp;&nbsp;"$_SERVER["REMOTE_ADDR"]."<br />";
                    
    $browser getBrowser($_SERVER['HTTP_USER_AGENT']);
                    
    $ip $_SERVER["REMOTE_ADDR"];
                    
    $loc _ipinfo($ip);
                    
    $messaggio .= "Location: ".$loc"<br />";
                    
    $messaggio .= "Browser:&nbsp;&nbsp;"$browser."&nbsp;&nbsp;<br />";
                    
    $messaggio .= "Messaggio: <br />"nl2br(replace_text($_POST["messaggio"]))."<br />";
                    
    $messaggio .= "=====================================================================";

                    
    $mail->Body$messaggio;

                    
    $oggetto "Richiesta da ".$www_email." : ".$_POST["oggetto"]."";

                    
    $mail->Subject=$oggetto;


                    if(
    $mail->Send()){

                      
    $msg "ok, attendere prego..al ritorno della home page. ";

                      
    redirect("index.php",4);

                    }else{

                      
    $error "Errore invio mail";

                    }

                  }
                  else
                  {
                    
    // not success result
                    
    $error "You are a robot";
                  }
                }
              }
              
    $nome = (isset($_POST["nome"])) ? trim(($_POST["nome"])): '';
              
    $cognome = (isset($_POST["cognome"])) ? trim(($_POST["cognome"])): '';
              
    $oggetto = (isset($_POST["oggetto"])) ? trim(($_POST["oggetto"])): '';
              
    $messaggio = (isset($_POST["messaggio"])) ? trim(($_POST["messaggio"])): '';
              
    $email = (isset($_POST["email"])) ? trim(($_POST["email"])): '';
              
    ?>
              <script src='https://www.google.com/recaptcha/api.js'></script>
              <?php
              
    if(isset($error)){ echo '<p class="info_error">'.$error.'</p>';}
              if(isset(
    $msg)){ echo $msg;} else {
                
    ?>
                <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" id="reCaptchaForm">
                  <p>Nome</p>
                  <p><input type="text" name="nome"  class="form-control" value="<?php if(isset($_POST['nome'])){echo htmlspecialchars($_POST['nome']);}else { echo htmlspecialchars($nome); }?>" /></p>
                  <p>Cognome</p>
                  <p><input type="text" name="cognome" class="form-control"  value="<?php if(isset($_POST['cognome'])){echo htmlspecialchars($_POST['cognome']);}else { echo htmlspecialchars($cognome); }?>"  /></p>
                  <p>Oggetto</p>
                  <p><select name="oggetto" class="form-control">
                    <option value="Informazioni"   <?php if ($oggetto == "Informazioni") echo ' selected' ?>>Informazioni</option>
                    <option value="Richiesta di contatto"    <?php if ($oggetto == "Richiesta di contatto") echo ' selected' ?>>Richiesta di contatto</option>
                    <option value="Richiesta Curriculum Vitae"    <?php if ($oggetto == "Richiesta Curriculum Vitae") echo ' selected' ?>>Richiesta Curriculum Vitae</option>
                    <option value="Altro"    <?php if ($oggetto == "Altro") echo ' selected' ?>>Altro</option>
                  </select>
                </p>
                <p>Email</p>
                <p><input type="text" name="email" class="form-control" size="40" value="<?php if(isset($_POST['email'])){echo htmlspecialchars($_POST['email']);}else { echo htmlspecialchars($email); }?>" /></p>
                <p>Messaggio</p>
                <p><textarea rows="10" cols="40"  class="form-control"name="messaggio"><?php if(isset($_POST['messaggio'])){echo $_POST['messaggio'];}else { echo $messaggio; }?></textarea></p>
                <div class="g-recaptcha" data-sitekey="<?php echo $google_sitekey?>"></div>
                <input type="submit" value="Invia contatto" class="btn btn-primary submit" name="submit" />
              </form>
              <?php ?>
            </fieldset>
          </div>
          <?php
          
    echo "</div>\n";
          echo 
    "</div>\n";
          
    ?>
        </div>
      </div>
    </div>
    <?php
    include("theme/".$theme."/footer.php");
    ?>
     
Sto caricando...

Condividi questa Pagina