Ver Mensaje Individual
  #46 (permalink)  
Antiguo 07/10/2009, 02:02
manupalaya
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

Hola joaowizard,

Llevas razón, este es el último post. Además aprovecho para darte las gracias, por tener tanta paciencia y explicar a un novato, paso a paso como hacer un Formulario Completo.

A continuación dejo una breve explicación para otros y el "Codigo famoso"

CARASTERISTICAS DEL FORMULARIO
Tras rellenar envia un email al Administrador de la web, y al Usuario
Tiene una imagen Captcha para impedir Spam
Todos los campos se validan y sale una Ventana si algún campo esta en blanco.
Es un ejemplo completo que incluye select, radio button, checkbox, textarea
Si el formulario esta mal rellenado vuelve para atrás y los datos se conservan
Si se rellena correctamente sale un mensaje de "Su email se ha enviado correctamente"


NOTAS:

Debes tener una imagen cualquiera llamada "fondocaptcha.gif" de por ejemplo 100x30pixeles, y guardala junto con los demás archivos.
Crea 3 archivos llamados "formulario.php", "procesa.php" y "captcha.php"
y pegales los codigos correspondientes, que abajo se detallan.
Subelos a una carpeta de tu servidor y pon la ruta http://www.tuweb.org/formulario.php


a disfrutar!

CODIGOS CORTA Y PEGA

formulario.php
Código PHP:
<?php session_start(); ?>
<html><head><title>formulario</title></head>
      <body>
      <form name="ejemplo" action="procesa.php" method="post">
      <p>Nombre: <input type="text" name="nombre">(obligatorio)</p>
      <p>email: <input type="text" name="email">(obligatorio)</p>
      <p>Habilidades:<input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
      <p>Aceptas las condiciones: <input type="checkbox" name="aceptas">Si(obligatorio)</p>
      <p>ciudad: <select name="ciudad" size="1">
      <option>Barcelona</option>
      <option>Madrid</option>
      <option>Sevilla</option>
      </select>(obligatorio)</p>
      <p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
      <p><img src="captcha.php" width="100" height="30"></p>
      <p><input name="tmptxt" type="text">
      (obligatorio)</p>
      <p>
      <label>
      <input type="submit" name="button" id="button" value="Enviar">
      </label>
      </p>
      </form>
      </body>
procesa.php
Código PHP:
<?php session_start();//verifico captcha
      
if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
      echo 
"<script>window.alert('IMAGEN DE SEGURIDAD INVALIDA');</script>;";;//mensaje de error correspondiente
      
echo "<script>location.href='javascript:history.back()' ;</script>;";//con esto no se pierden los datos del FORM
      
exit();
      }
      
//**************** COMPRUEBO NOMBRE VACIO **********************
      
if (!($_POST['nombre'])){
      echo 
"<script>window.alert('Debe llenar el campo Nombre');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }

      
//**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
      
if (!($_POST['email'])){
      echo 
"<script>window.alert('Debe llenar el campo Email');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }

      elseif(!
eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
      echo 
"<script>window.alert('El email ingresado es invalido');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      
//acá verifico que el email sea VALIDO, que tenga la forma [email][email protected][/email]
      
}
      
//**************** COMPRUEBO RADIO BOTON MARCADO **********************
      
if (!($_POST['karate'])){
      echo 
"<script>window.alert('Debe llenar el campo Habilidades Radio buton');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }
      
//**************** COMPRUEBO si aceptas las condiciones **********************
      
if (!($_POST['aceptas'])){
      echo 
"<script>window.alert('Debe llenar el campo Aceptar las condiciones');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }
      
//**************** COMPRUEBO ciudad **********************
      
if (!($_POST['ciudad'])){
      echo 
"<script>window.alert('Debe llenar el campo ciudad');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }
      
//**************** COMPRUEBO comentarios MARCADO **********************
      
if (!($_POST['comentarios'])){
      echo 
"<script>window.alert('Debe llenar el campo comentarios');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }

      
//una vez que verifique todo, pues envÃ*o el email.
      //Declaras hacia donde se envÃ*a el correo, el Destinatario
      
$recipiente "[email protected]";
      
//defines el Asunto del correo
      
$asunto "Contacto desde la Pagina WEB ";
      
//defines el cuerpo del mensaje
      
$message ="nombre: ".$_POST['nombre']."<br>";
      
$message .="email: ".$_POST['email']."<br>";
      
$message .="preferencias: ".$_POST['karate']."<br>";
      
$message .="ciudad: ".$_POST['ciudad']."<br>";
      
$message .="comentarios: ".$_POST['comentarios']."<br>";
      
$message stripslashes($message);
      
//haces los encabezados
      
$headers "MIME-Version: 1.0\r\n";
      
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
      
$headers .= "From: $email\r\n";
      
$headers .= "Repaly-to: $email\r\n";
      
$headers .= "Cc: ".$_POST['email']."\r\n";//le envÃ*as una copia al remitente
      //chao email!!
      
mail($recipiente,$asunto,$message,$headers);
      echo 
"El mensaje se envio correctamente";
      
?>

captcha.php
Código PHP:
<?php session_start();
function 
captcha($length) {
$pattern "1234567890abcdefghijklmnopqrstuvwxyz";
for(
$i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,50)};
}
return 
$key;
}


$_SESSION['tmptxt'] = captcha(8);
$captcha imagecreatefromgif("fondocaptcha.gif");
$colText imagecolorallocate($captcha000);
imagestring($captcha5167$_SESSION['tmptxt'], $colText);
header("Content-type: image/gif");
imagegif($captcha);
?>