Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/07/2011, 10:26
jose-web
 
Fecha de Ingreso: enero-2009
Ubicación: Tijuana
Mensajes: 80
Antigüedad: 15 años, 4 meses
Puntos: 2
Cual es el mejor formulario de PHP con algun Captcha?

Buenos dias, amigos me ando peleando con los formularios , que opinan del mio? No me llegan a veces los emails, y ademas a veces me llega SPAM, entonces alguna sugerencia de un codigo PHP y Captcha juntos para su proteccion?


EMAIL.PHP :

Código PHP:
<?php
session_start
();
if(isset(
$_POST["Code"])) {
    if((
$_SESSION['captcha_code'] == $_POST['Code']) && (!empty($_SESSION['captcha_code'])) ) {
        
//Passed!
        
        
$captcha_msg="Thank you";
        
$admin'[email protected]'//
  
$subject'Titulo de Subject';
  
$message'Message to '.$admin.' from '.$email.":\n\n";

  foreach(
$HTTP_POST_VARS as $name=> $value) {
    
$message.= "$name: $value\n";
  }

$message WORDWRAP($message,75,"\n");

  
mail($admin$subjectSTRIPSLASHES$message ) , "From: $email");

header('Location: http://'.getenv('HTTP_HOST').'/thanks.php');
        
    }else{
        
// Not passed 8-(
        
$captcha_msg="<font color=\"ff0000\">"."Invalid Code"."</font>";
        
//$captcha_msg="invalid code";
        
if(isset($_POST["MM_insert"])){
              unset(
$_POST["MM_insert"]);
        }
        if(isset(
$_POST["MM_update"])){
            unset(
$_POST["MM_update"]);
        }
    }
}
class 
CaptchaImage {
    var 
$font "verdana.ttf";
    function 
hex_to_dec($hexcolor){
    
//convert hex hex values to decimal ones
    
$dec_color=array('r'=>hexdec(substr($hexcolor,0,2)),'g'=>hexdec(substr($hexcolor,2,2)),'b'=>hexdec(substr($hexcolor,4,2)));
    return 
$dec_color;
    }
    function 
generateCode($characters) {
        
/* list all possible characters, similar looking characters and vowels have been removed */
        
$possible '23456789bcdfghjkmnpqrstvwxyz'
        
$code '';
        
$i 0;
        while (
$i $characters) { 
            
$code .= substr($possiblemt_rand(0strlen($possible)-1), 1);
            
$i++;
        }
        return 
$code;
    }
    function 
CaptchaImage($width='150',$height='30',$characters='6',$hex_bg_color='FFFFFF',$hex_text_color="FF0000",$hex_noise_color="CC0000"$img_file='captcha.jpg') {
        
$rgb_bg_color=$this->hex_to_dec($hex_bg_color);
        
$rgb_text_color=$this->hex_to_dec($hex_text_color);
        
$rgb_noise_color=$this->hex_to_dec($hex_noise_color);
        
$code $this->generateCode($characters);
        
/* font size will be 60% of the image height */
        
$font_size $height 0.60;
        
$image = @imagecreate($width$height) or die('Cannot Initialize new GD image stream');
        
/* set the colours */
        
$background_color imagecolorallocate($image$rgb_bg_color['r'], $rgb_bg_color['g'],$rgb_bg_color['b']);
        
$text_color imagecolorallocate($image$rgb_text_color['r'], $rgb_text_color['g'],$rgb_text_color['b']);
        
$noise_color imagecolorallocate($image$rgb_noise_color['r'], $rgb_noise_color['g'],$rgb_noise_color['b']);
        
/* generate random dots in background */
        
for( $i=0$i<($width*$height)/3$i++ ) {
            
imagefilledellipse($imagemt_rand(0,$width), mt_rand(0,$height), 11$noise_color);
        }
        
/* generate random lines in background */
        
for( $i=0$i<($width*$height)/150$i++ ) {
            
imageline($imagemt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
        }
        
/* create textbox and add text */
        
$textbox imagettfbbox($font_size0$this->font$code);
        
$x = ($width $textbox[4])/2;
        
$y = ($height $textbox[5])/2;
        
imagettftext($image$font_size0$x$y$text_color$this->font $code);
        
/* save the image */
        
imagejpeg($image,$img_file);
        
imagedestroy($image);
        echo 
"<img src=\"$img_file?".time()."\" width=\"$width\" height=\"$height\" alt=\"security code\" id=\"captchaImg\">";
        
$_SESSION['captcha_code'] = $code;
    }

}
?>

Formulario:

Código HTML:
<form action="email.php" method="post" name="forma" id="forma">
                  <table width="489" border="0" align="center" cellpadding="0" cellspacing="0" class="form" id="form">
                    <tr>
                      <td colspan="2"><p>
                        <label>* denotes a required field<br />
                          <br />
                        </label>
                      </p></td>
                    </tr>
                    <tr>
                      <td width="220"><p>
                        <label></label>
                        <label>First Name: </label>
                        <br />
                      </p></td>
                      <td width="170"><p>
                        <input name="nombre" type="text" class="campo" id="nombre" size="35" />
                      </p></td>
                    </tr>
                    <tr>
                      <td><p>
                        <label>Last Name: </label>
                      </p></td>
                      <td><p>
                        <input name="contact_last_name" type="text" size="35" />
                      </p></td>
                    </tr>
                    <tr>
                      <td><p>
                        <label>Address me as: </label>
                        <br />
                        <label></label>
                      </p></td>
                      <td><p>
                        <input name="contact_greeting" type="text" size="35" />
                      </p></td>
                    </tr>
                    <tr>
                      <td><p>
                        <label>Email: </label>
                        <br />
                        <label></label>
                      </p></td>
                      <td><p>
                        <input name="email" type="text" class="campo" id="email" size="35" />
                      </p></td>
                    </tr>
                    <tr>
                      <td><p>
                        <label>Phone: </label>
                      </p></td>
                      <td><p>
                        <input name="contact_home_phone" type="text" size="35" />
                      </p></td>
                    </tr>
                    <tr>
                      <td><p>
                        <label>How did you hear about our practice? </label>
                        <br />
                        <label></label>
                      </p></td>
                      <td><p>
                        <select name="how_did_you_hear_about_our_practice">
                          <option selected="selected">Choose one...</option>
                          <option value="Staff Member">Staff Member </option>
                          <option value="Advertisement">Advertisement</option>
                          <option value="Yellow Pages">Yellow Pages</option>
                          <option value="Other">Other</option>
                        </select>
                      </p></td>
                    </tr>
                    <tr>
                      <td><p>
                        <label>How did you find our website? </label>
                      </p></td>
                      <td><p>
                        <select name="how_did_you_find_our_website">
                          <option selected="selected">Choose one...</option>
                          <option value="Search Engine">Search Engine</option>
                          <option value="Advertisement">Advertisement</option>
                          <option value="A friend">A friend</option>
                          <option value="Unknown">Unknown</option>
                        </select>
                      </p></td>
                    </tr>
                    <tr>
                      <td><p>Comments: </p></td>
                      <td><p>
                        <textarea name="contact_comment" rows="7" cols="18"></textarea>
                      </p></td>
                    </tr>
                    <tr>
                      <td colspan="2"><div align="center">
                        <p>* For your security, please fill the code below:<br />
                          <?php $captcha = new CaptchaImage(150,50,5,'547d93','000000','0066CC');?>
                          <br />
                          Code
                          <input type="text" name="Code" id="Code" />
                        </p>
                      </div>
                        <p>
                          </label>
                          <?php echo $captcha_msg ?>&nbsp;&nbsp;</p></td>
                    </tr>
                    <tr>
                      <td><p>&nbsp;</p></td>
                      <td><p>
                        <input name="button2" type="submit" class="form" id="button2" value="Send" />
                      </p></td>
                    </tr>
                  </table>
                </form>