Autor Zpráva
Tiffany
Profil
Ahoj, Prosím o radu.....
zkouším dát recaptcha do formuláře...ale pokud je prázdná......tak to nehlídá...pokud tam napíšu, tak ano....
<?php
    require_once('recaptchalib.php');

// Get a key from https://www.google.com/recaptcha/admin/create
$publickey = "";
$privatekey = "";

# the response from reCAPTCHA
$resp = null;
# the error code from reCAPTCHA, if any
$error = null;


    
    function clear_user_input($hodnota) {
      if (get_magic_quotes_gpc()) 
      $hodnota=stripslashes($hodnota);

      $hodnota= str_replace( "\n", '', trim($hodnota)); 
      $hodnota= str_replace( "\r", '', $hodnota);
      return $hodnota; 
    
    }
@$check_data = $_REQUEST['check_data']; 
if(isset($check_data))
{
    $jmeno = $_REQUEST['jmeno']; 
    $prijmeni = $_REQUEST['prijmeni']; 
    $email = $_REQUEST['email'];
    $telefon = $_REQUEST['telefon'];
    $zprava = $_REQUEST['zprava'];
        

    if($jmeno=='' || $prijmeni=='' || $email=='' || $zprava=='' || $telefon==''){
      $data_error = true;
    }
    
    if($jmeno=='')
    {
        $no_jmeno = true;
    }
    
    if($prijmeni=='')
    {
        $no_prijmeni = true;
    }
    
    if($telefon=='')
    {
        $no_telefon = true;
    }
    
    if($email=='')
    {
        $no_email = true;
    }
    
    if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])
  *@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",
               $email))
    {
        $valid_email = true;
    }
    
    
    if($zprava =='')
    {
        $no_zprava = true;
    }
    
    # was there a reCAPTCHA response?
if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {
             
               
        } else {
                # set the error code so that we can display it
                 $soucet_error = true;
              
                }
}
    

        
    if(!$data_error && !$soucet_error){
    //sestavit telo zpravy k odeslani
      $_telo  = "Zde jsou data, která byla poslána z kontaktního formuláře:\n";     
      $_telo .= "Jméno: ".$jmeno."\n";
      $_telo .= "Příjmení: ".$prijmeni."\n";
      $_telo .= "Email: ".$email."\n"; 
      $_telo .= "Telefon: ".$telefon."\n";   
        $_telo .= "Message: ".$zprava."\n";       
      $_email = clear_user_input($email);
      $_jmeno = clear_user_input($spolecnost);
      $_predmet = 'Zpráva ze snadnecesty.eu ';
      $headers = 'From:' .$email. "\r\n";

    //Posílá mi e-mail spolu s elementy vytvořenými výše
      mb_language('Neutral');
      mb_internal_encoding("UTF-8");
      mb_http_input("UTF-8");
      mb_http_output("UTF-8");
      mb_send_mail ("mail@mail.cz", $_predmet, $_telo, $headers);  
      $data_sent = true;
      $jmeno = '';
      $prijmeni = '';
      $zprava = '';
      $email = '';
      $telefon = '';
    }
}
    
      
    ?>

 <tr id="nodisplay">
                        <td><input type="hidden" name="check_data" value="T"/></td>
                     <table>
                    </tr>
                    
                    <tr class="nadpis">
                        <td>Kontrolní součet</td>
                    </tr>
                    
                    <tr id="soucet">
                        <td colspan="3" nowrap="nowrap"><?php echo recaptcha_get_html($publickey, $soucet_error); ?> </td>
                    </tr>
                   
                    <tr>
                        <td><input tabindex="7" type="submit" value="" /></td>
                        
                    </tr>
             </table>


<?php 
                        if(@$data_sent){  
                            echo '<div class="uspech_hlaska"><font color="green">Zpráva byla odeslána :) Děkujeme.</font></div>';
                        }else{
                        @$error_message = '';
                    if(@$data_error)
                    {
                            echo '<div class="chybova_hlaska"><font color="red">Vyplňte, prosím, všechny údaje!</font></div>';
                    }
                    if(@$soucet_error)
                    {
                            echo '<div class="chybova_hlaska"><font color="red">Vyplňte, prosím, kontrolní součet!</font></div>';
                    }
                    
                    }
                      ?>
Virtus
Profil
Zdravím,
problém je v podmínce: if ($_POST["recaptcha_response_field"]) {, respektive si myslím, že je zde úplně zbytečná, každopádně pro vysvětlení, pokud zůstane captcha nevyplněná, tato podmínka se vyhodnotí jako FALSE, pokud podmínku potřebuješ z nějakého důvodu zachovat, tak tam přídej něco takového:
<?php
   # was there a reCAPTCHA response?
if ($_POST["recaptcha_response_field"]) {
...
} else {
  $soucet_error = true;
}

edit: a nebo lépe ještě možná takhle, pak zde nemusí být else a logika se narozdíl od předchozího příkladu nezmění
<?php
   # was there a reCAPTCHA response?
if (isset($_POST["recaptcha_response_field"])) {
}
Tiffany
Profil
úžasný.......funguje :) děkuji moc!!!

ta podmínka byla z mé strany pochopena přesně obráceně :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: