Ver Mensaje Individual
  #26 (permalink)  
Antiguo 30/04/2008, 16:56
paulkees
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Re: APORTE: Sistema de Captcha

Hola nuevamente...

El asunto es que tengo un formulario en contacto.php al cual le incorpore el Captcha que me muestra la imagen con su código sin problemas.

Al enviar el formulario lo recepciona el archivo registro.php, es decir, sería el archivo que procesa el formulario. Este registro.php verifica si algunos campos (obligatorios) están llenos o no. Si todo está bien, incorpora los datos aportados en una BD y envía un correo al usuario para que active su cuenta.

Hasta ahí todo bien, el inconveniente que tengo y no puedo darme cuenta como es (después de mucho intentar), es cómo meter en el archivo registro.php la comprobación del código captcha ingresado... no puedo hacerlo funcionar!!!

Comprobación del Captcha
Código PHP:
if(Captcha::verificaCaptcha($_POST['captcha'])) {
    echo 
"Captcha correcto";
} else {
    echo 
"Captcha incorrecto";

Posteo el archivo registro.php que procesa el formulario.

Por favor, ayudenmé!!!

Gracias.

registro.php
Código PHP:
<?php
session_start
();
//datos para establecer la conexion con la base de mysql.
$conexion=mysql_connect('localhost','usuario','contraseña')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('BD')or die ('Error al seleccionar la Base de Datos: '.mysql_error());


//añadimos la funcion que se encargara de generar un numero aleatorio
function genera_random($longitud){
    
$exp_reg="[^A-Z0-9]";
    return 
substr(eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())),
       
0$longitud);
}


function 
formRegistro(){
?>


<?php
}

// verificamos si se han enviado ya las variables necesarias, las que tenemos en nuestro form cambialo, como sea el tuyo.
if (isset($_POST["apellido"])) {
    
$apellido $_POST["apellido"];
    
$nombre $_POST["nombre"];
    
$email $_POST["email"];
    echo 
"<div style='text-align:center;font-weight:bold;font-size:200%;color:#005784;margin-top:200px;'>";
    echo 
"<span>$apellido </span>";
    echo 
$nombre;
    echo 
"</div>";
    
// Hay campos en blanco
    
if($apellido==NULL|$nombre==NULL|$nacimiento==NULL|$residencia==NULL|$provincia==NULL|$email==NULL|$investiga==NULL) {
        echo 
"<div style='font-size:250%;text-align:center;font-weight:bold;color:#B40404;'>Algún campo obligatorio está vacio!</div>";
        
formRegistro();
    }else{
            
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkemail mysql_query("SELECT email FROM gerrusarg WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            if (
$email_exist>0) {
                echo 
"<div style='font-size:130%;text-align:center;font-weight:bold;color:#B40404;'>La cuenta de correo <span style='color:blue;'>$email</span> ya está en uso.</div>";
                
formRegistro();
        }else{

                  
//agregamos la variable $activate que es un numero aleatorio de
                  //20 digitos crado con la funcion genera_random de mas arriba

                  
$activate genera_random(20);

                  
//aqui es donde insertamos los nuevos valosres en la BD  activate y el valor 1 que es desactivado

                
$query 'INSERT INTO gerrusarg (apellido, nombre, nacimiento, residencia, provincia, email, web, investiga, argentina, rusia, activate, estado)
                VALUES (\''
.$apellido.'\',\''.$nombre.'\',\''.$nacimiento.'\',\''.$residencia.'\',\''.$provincia.'\',\''.$email.'\',\''.$web.'\',\''.$investiga.'\',\''.$argentina.'\',\''.$rusia.'\',\''.$activate.'\', 1)';
                
mysql_query($query) or die(mysql_error());



                echo 
"<div style=text-align:center;font-size:130%;>";
                echo 
"<span style='font-weight:bold;font-style:italic;color:#B40404;'>Parece que todo ha ido bien!!!</span><br />";
                echo 
"Ha sido registrado con la cuenta de correo: <span style='font-weight:bold;color:blue;'>$email</span> de manera satisfactoria.<br />";
                echo 
"Le enviaremos ahora un email para activar su cuenta al correo que nos facilito.<br />";
                echo 
"Luego de esa activación, integrará la lista Ger-Rus-Arg con los datos aportados.<br />";
                echo 
"<span style='font-weight:bold;font-style:italic;color:#B40404;'>Muchas gracias por participar!!!</span>";
                echo 
"</div>";



                
$query   "SELECT * FROM gerrusarg WHERE apellido='$apellido'";
         
$result mysql_query($query $conexion) or die ( mysql_error() );
         
$row   mysql_fetch_array($result);

         
$path="http://miweb/formulario/registros/"//creamos nuestra direccion, con las carpetas que sean si hay
         //armamos nuestro link para enviar por mail en la variable $activateLink
$activateLink=$path."activar_cuenta.php?id=".$row['id']."&activateKey=".$activate."";

                          
// Datos del email

$nombre_origen    "miweb";
$email_origen     "[email protected]";
$email_copia      "[email protected]";
$email_ocultos    "[email protected]";
$email_destino    "".$row['email']."";



$asunto           "".$row['apellido']." Active su cuenta";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="623" align="left"></td>
  </tr>
  <tr>
    <td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong>     Estos son sus datos de registro, '
.$row['apellido'].'</strong></div></td>
  </tr>
  <tr>
    <td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> USUARIO: '
.$row['apellido'].'</strong><br><br><br>
          <strong>EMAIL : </strong>'
.$row['email'].'</strong><br><br><br>
          <strong>SU LINK DE ACTIVACION:<br><a href="'
.$activateLink.'">'.$activateLink.' </strong></a><br><br><br>
          <strong>POR FAVOR HAGA CLICK EN LINK DE ARRIBA PARA ACTIVAR SU CUENTA E INGRESAR AL LISTADO</strong><br><br><br>
          <strong>SI EL LINK NO FUNCIONA AL PRIMER INTENTO, HAGALO UNA SEGUNDA VEZ, EL SERVIDOR A VECES TARDA EN PROCESAR LA PRIMERA ORDEN</strong><br><br><br>

          <strong>Gracias por participar.</strong><br><br><br>
    </div>
    </td>
  </tr>
</table>'
;



$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";
//*****************************************************************//

if($formato == "html")
   {   
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
     else {
       
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";
   }
if (@
mail($email_destino$asunto$mensaje$headers))
    {  }






            }
        }

} else {
    
formRegistro();
}

?>