Foros del Web » Programando para Internet » PHP »

Aporte - Formulario Contactos con Captcha Sencillo

Estas en el tema de Aporte - Formulario Contactos con Captcha Sencillo en el foro de PHP en Foros del Web. He creado un formulario de Contactos que consta de 2 archivos PHP, son los siguientes: 1. El primero es contactos.php el cual creara 2 numeros ...
  #1 (permalink)  
Antiguo 29/11/2008, 07:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 2
Aporte - Formulario Contactos con Captcha Sencillo

He creado un formulario de Contactos que consta de 2 archivos PHP, son los siguientes:

1. El primero es contactos.php el cual creara 2 numeros aleatorios para el sistema Captcha y mostrara el formulario a llenar por el usuario y hara la pregunta Captcha que consiste es pregunta la suma de los 2 numeros aleatorios, para esto debo subir los 2 numeros aleatorios a session para despues hacer operaciones y compararlos con el 2do PHP.

Aqui dejo el codigo:

Código PHP:
<?php
// Creo los 2 numeros aleatorios
$num1 rand(1,9);
$num2 rand(1,9);
// Guardo los numero en una session para evitar se borren y luego sumarlos
// y compararlos con la respuesta en contactar.php
session_start();
$_SESSION['numero1'] = $num1;
$_SESSION['numero2'] = $num2;
?> 

<form name="form1" method="post" action="contactar.php">

  <table width="75%" border="0" cellspacing="2" cellpadding="4">

    <tr> 

      <td colspan="2" align="right" valign="top"> <div align="justify">
        <p><font size="-1">Puede 
  
          enviar sus inquietudes a trav&eacute;s del siguiente formulario. Su 
  
          duda ser&aacute; atendida lo antes posible por uno de nuestros funcionarios. </font></p>
        <p><font size="-1"><strong>Importante</strong>: Para verificar el exito del envio de su mensaje favor responde correctamente la pregunta Anti-Spam y al dar click sobre el bot&oacute;n enviar saldra un mensaje en una ventana diciendo : &quot;El mensaje fue enviado correctamente&quot;</font></p>
        </div>
<table width="97%" border="0" cellspacing="0" cellpadding="0">

          <tr> 

            <td align="right" valign="top">&nbsp;</td>

            <td valign="top">&nbsp;</td>
          </tr>

          <tr> 

            <td width="13%" align="right" valign="top">

<div align="left"><font size="-1"><b>Nombre:</b></font></div></td>

            <td width="87%" valign="top"> <font size="-1">
              <input name="nombre" type="text" id="nombre" size="50">            
            </font></td>
          </tr>

          <tr> 

            <td align="right" valign="top"><div align="left"><font size="-1"><b>Empresa:</b></font></div></td>

            <td valign="top"> <font size="-1">
              <input name="empresa" type="text" id="empresa" size="50"> 
            </font></td>
          </tr>

          <tr> 

            <td align="right" valign="top"><div align="left"><font size="-1"><b>Cargo:</b></font></div></td>

            <td valign="top"> <font size="-1">
              <input name="cargo" type="text" id="cargo" size="50"> 
            </font></td>
          </tr>

          <tr> 

            <td align="right" valign="top"><div align="left"><font size="-1"><b>Direcci&oacute;n:</b></font></div></td>

            <td valign="top"> <font size="-1">
              <input name="direccion" type="text" id="direccion" size="50"> 
            </font></td>
          </tr>

          <tr>

            <td align="right" valign="top"><div align="left"><font size="-1"><b>Ciudad:</b></font></div></td>

            <td valign="top"><font size="-1">
              <input name="ciudad" type="text" id="ciudad" size="50">
            </font></td>
          </tr>

          <tr> 

            <td align="right" valign="top"><div align="left"><font size="-1"><b>Pais:</b></font></div></td>

            <td valign="top"><font size="-1">
              <input name="pais" type="text" id="pais" size="50">
            </font></td>
          </tr>

          <tr> 

            <td align="right" valign="top"><div align="left"><font size="-1"><b>Tel&eacute;fono:</b></font></div></td>

            <td valign="top"> <font size="-1">
              <input name="telefono" type="text" id="telefono" size="50"> 
            </font></td>
          </tr>

          <tr> 

            <td align="right" valign="top"><div align="left"><font size="-1"><b>e-mail:</b></font></div></td>

            <td valign="top"> <font size="-1">
              <input name="email" type="text" id="email" size="50"> 
            </font></td>
          </tr>          

          <tr> 

            <td align="right" valign="top"><div align="left"><font size="-1"><b>Mensaje:</b></font></div></td>

            <td valign="top"><p><font size="-1">
              <textarea name="mensaje" cols="40" rows="10" wrap="VIRTUAL" id="mensaje"></textarea>
            </font></p>            </td>
          </tr>

          <tr>
            <td height="27" align="right" valign="top"><font size="-1">&nbsp;</font></td>
            <td><p><font size="-1"><b>Ayudanos a Evitar el Spam, Favor Responde: </b></font></p>            </td>
          </tr>
          <tr>
            <td height="19" align="right" valign="top"><div align="left"><font size="-1"></font></div></td>
            <td><font size="-1"><b>Pregunta: </b>Cuanto suma <b><?php echo ($num1);?> </b>m&aacute;s <strong><?php echo ($num2);?> </strong> ?</font></td>
          </tr>
          <tr>
            <td height="22" align="right" valign="top"><div align="left"><font size="-1"></font></div></td>
            <td><font size="-1"><strong>Respuesta:</strong>
              <input name="respuesta" type="text" id="respuesta" value="0" size="2" maxlength="2" />
            </font></td>
          </tr>
          <tr>
            <td align="right" valign="top">&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr> 

            <td align="right" valign="top"><p>&nbsp;</p></td>

            <td> <input type="submit" name="Submit" value="Enviar"> </td>
          </tr>
      </table></td>

    </tr>

    <tr> 

      <td colspan="2" valign="top"> <hr width="90%" size="1" noshade></td>

    </tr>

  </table>

</form>
2. El segundo archivo contactar.php se encargara de llamar los numeros aleatorios antes calculados por medio de la sesion y despues hara la suma y comparara con la respuesta dada por el usuarios, si la respuesta es correcta enviara dicho correo. De esta forma evitamos el SPAM.

Aqui dejo el codigo:
Código PHP:
<?php
// Llamo los 2 numeros aleatorios creados con la session anteriormente en contactos.php
session_start();
$num1=$_SESSION['numero1']; 
$num2=$_SESSION['numero2']; 
// hago la suma de los 2 numeros aleatorios
$sumval $num1 $num2;
// Llamo la respuesta dada por el usuario a la pregunta de la suma de 2 numeros aleatorios
$numval=$HTTP_POST_VARS['respuesta']; 
// Hago la comparacion de la suma con la respuesta dada por el usuario
if ($sumval == $numval)
{
    
// Si es correcta hago el envio de correo por PHP
    // email para envio
    
$para  '[email protected]';
    
// cabeceras del mensaje
    
$cabeceras 'To: Mi Correo No.1 <[email protected]>' "\r\n";
    
$cabeceras .= 'From: Mi Correo No.2 <[email protected]>' "\r\n";
    
$cabeceras .= 'Cc: Mi Correo No.3 <[email protected]>' "\r\n";
    
$cabeceras .= 'Bcc: Mi Correo No.4 <[email protected]>';
    
// asunto del mensaje
    
$asunto 'Contacto Pagina Web';
    
// cuerpo del mensaje
    
$mensaje ='Contactos Pagina Web' "\n\n";
    
$mensaje .='Fecha (Dia/Mes/Año): --> ' .date('d/m/Y') . "\n";
    
$mensaje .='Hora (Hora:Minutos:Segundos): --> ' .date('h:i:s A') . "\n\n";
    
$mensaje .='Datos del Contacto' "\n\n";
    
// Llamo los campos digitados en el formulario con $HTTP_POST_VARS['nombre del campo']
    
$mensaje .='Nombre : ' $HTTP_POST_VARS['nombre'] . "\n";
    
$mensaje .='Empresa : ' $HTTP_POST_VARS['empresa'] . "\n";
    
$mensaje .='Cargo : ' $HTTP_POST_VARS['cargo'] . "\n";
    
$mensaje .='Ciudad : ' $HTTP_POST_VARS['ciudad'] . "\n";
    
$mensaje .='Pais : ' $HTTP_POST_VARS['pais'] . "\n";
    
$mensaje .='Telefono : ' $HTTP_POST_VARS['telefono'] . "\n";
    
$mensaje .='E-mail : ' $HTTP_POST_VARS['email'] . "\n";
    
$mensaje .='Mensaje : ' $HTTP_POST_VARS['mensaje'] . "\n\n";
    
$mensaje .='Email ejecutado desde la Pagina Web ';
    
// Envio del mensaje con la funcion Mail de PHP
    
mail ($para$asunto$mensaje$cabeceras);
    
// Muestro en una ventana el mensaje de envio exitoso y redireccion a la pagina principal
    
echo('<script language="JavaScript" >');
    echo(
'alert("El mensaje fue enviado correctamente");');
    echo(
'location.replace("http://www.midominio.com")');
    echo(
'</script>');

else
{
    
// Muestro en una ventana el mensaje NO envio y redireccion a la pagina principal
    
echo('<script language="JavaScript" >');
    echo(
'alert("El mensaje NO fue enviado, Favor Verfique La Respuesta Anti-Spam");');
    echo(
'location.replace("http://www.midominio.com")');
    echo(
'</script>');
}
?>
Gracias de antemano a Ustedes que me dieron las ideas para hacerlo.

Ing. Bladimir Silva T
Cartago - Valle
Colombia

Última edición por Blasito48; 14/01/2009 a las 13:20
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 4 personas




La zona horaria es GMT -6. Ahora son las 00:23.