¿Como enviar un formulario con PHP?
Ahora te vamos a explicar el codigo PHP que debes usar para enviar un formulario y como interactuara con el mismo.
Manual de PHP Webstilo
Otro manual de php
Manual de PHP de Programacion.net
Funcion Mail() en PHP
Si no sabes PHP, no te preocupes, al final del articulo podras descargar el programa, solo debes subirlo a tu sitio web via FTP y configurar el form de la manera que te mostramos y eso sera todo.
ANTES DE EMPEZAR
Si solo queres adaptar tu formulario, te sugerimos que descargues el codigo desde nuestra seccion de ayuda, incluye un formulario de muestra, y sigas leyendo aqui.
Si deseas continuar y aprender, es necesario que tengas conocimientos sobre PHP, como enviar emails con PHP y conocimientos minimos de programacion, mas que nada sentencias y condicionales.
COMENZANDO...
Bien, un archivo PHP que envie los resultados de un formulario básicamente necesita capturar estos resultados, separarlos en resultados normales y especiales ( por especiales entendemos algunos campos de formulario mediante los cuales queramos darle instrucciones al archivo PHP. Los verás mas adelante, son campos como redirect, subject, etc) y luego realizar operaciones con los resultados especiales, tabular, o sea, darle apariencia a los que no lo son y luego enviarte el email.
Debido a que el programador conoce cuales son las variables especiales y desconoce las otras variables, o campos que usara el usuario, comienza realizando un while, que capture todos los campos enviados por el formulario, el cual lo hará por el metodo POST y vea si son especiales o no. Si son especiales, los asigne a ciertas variables reservadas. Si no lo son, los muestre tabulados.
Esto lo logra con este codigo:
if (count(stripslashes($_POST))!=0){
$cuerpodelmensaje="";
while (list($key, $val) = each ($_POST)){
switch ($key){
case "recipient":
$enviaraemail=$val;
break;
case "email":
$emaildelqueenvia=$val;
break;
case "subject":
$asunto=$val;
break;
case "redirect":
$fgwreturnurl=$val;
if($fgwreturnurl!=""){$haygracias=true;}
break;
case "plantilla":
$plantilla=$val;
if($plantilla!=""){$hayplantilla=true;}
break;
default:
$keysinguionesbajos=ereg_replace("_"," ",$key);
if($hayplantilla==true){
$reemplazar.=",{{".$key."}}";
$cadenanueva.=",".$val;
} else {
$cuerpodelmensajefinal.=$keysinguionesbajos.": ".$val."<br>";
}
}
Donde, como vemos, pregunta si se envio alguna variable mediante POST con la linea if (count(stripslashes($_POST))!=0){
y, si se envio, luego ejecuta un while para revisar cada variable enviada en busca de nombres especiales mediante la sentencia case'':
Case significa "en caso de que" o sea, en caso de que la variable POST se llame de una determinada manera.
Luego de esta verificacion viene el codigo que se encarga de verificar si se envio el email, mediante esta linea:
if (!$emaildelqueenvia){
echo "No se ha indicado una dirección de E-Mail. Presiona el boton del navegador para volver atras al formulario y colocarlo.";
die;}
Podes comentarlo, o sea, ponerle // adelante para que no lo interprete, si no queres llamar a alguno de tus campos email, que es lo que se necesita para que verifique el email ingresado.
Finalmente enviamos todo con esta instruccion:
@mail ($enviaraemail, $asunto, $cuerpodelmensajefinal, $headers)
Recuerda, la instruccion mail() es la que usa php para enviar los emails. Tiene una forma particular de escribirse, sobre la que encontrarás mas informacion en los enlaces.
Bien, ahora que te hemos dado un panorama sobre como funciona el php que envia el email, te dejamos con el codigo completo de nuestro PHP que envia los emails con formato. Recuerda que podrás descargarlo desde http://www.rhosting.com.ar/descargas/sendmail.zip :
function ValidarDatos($campo){
//Array con las posibles cabeceras a utilizar por un spammer
$badHeads = array("Content-Type:",
"MIME-Version:",
"Content-Transfer-Encoding:",
"Return-path:",
"Subject:",
"From:",
"Envelope-to:",
"To:",
"bcc:",
"cc:");
//Comprobamos que entre los datos no se encuentre alguna de
//las cadenas del array. Si se encuentra alguna cadena se
//dirige a una página de Forbidden
foreach($badHeads as $valor){
if(strpos(strtolower($campo), strtolower($valor)) !== false){
header("HTTP/1.0 403 Forbidden");
exit;
}
}
}
// Declaro como falsa la variable de plantillas para dejar que el programa la evalue
$hayplantilla=false;
// Declaro como falsa la variable de la pagina de agradecimiento para dejar que el programa la evalue
$haygracias=false;
// Declaro las variables de acumulacion de variables
$reemplazar.="";
$cadenanueva.="";
// Evalua si se pasaron variables. Si es asi separa variables especificas y compila las otras.
if (count(stripslashes($_POST))!=0){
$cuerpodelmensaje="";
while (list($key, $val) = each ($_POST)){
switch ($key){
case "recipient":
$enviaraemail=$val;
break;
case "email":
$emaildelqueenvia=$val;
break;
case "subject":
$asunto=$val;
break;
case "redirect":
$fgwreturnurl=$val;
if($fgwreturnurl!=""){$haygracias=true;}
break;
case "plantilla":
$plantilla=$val;
if($plantilla!=""){$hayplantilla=true;}
break;
default:
$keysinguionesbajos=ereg_replace("_"," ",$key);
if($hayplantilla==true){
$reemplazar.=",{{".$key."}}";
$cadenanueva.=",".$val;
} else {
$cuerpodelmensajefinal.=$keysinguionesbajos.": ".$val."<br>";
}
}
}
//if (!$emaildelqueenvia){
//echo "No se ha indicado una dirección de E-Mail. Presiona el boton del navegador para volver atras al formulario y colocarlo.";
//die;}
if($hayplantilla==true){
$reemplazados=explode(",",$reemplazar);
$cadenanuevaencadena=explode(",",$cadenanueva);
$archivo = file($plantilla);
$lineasdecadena = count($cadenanuevaencadena);
$lineas = count($archivo);
for($i=0; $i < $lineas; $i++){
$Cadena=$archivo[$i];
for( $j = 0; $j <= $lineasdecadena; $j++ ){
if(($reemplazados[$j]!="")&&($cadenanuevaencadena[$j]!="")){$Cadena=ereg_replace($reemplazados[$j],$cadenanuevaencadena[$j],$Cadena); }
}
$cuerpodelmensajefinal.=$Cadena;
}
}
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= "Content-Type:text/html; charset=iso-8859-1\r\n";
$headers .= 'To: '.$enviaraemail.'' . "\r\n";
$headers .= 'From: '.$emaildelqueenvia.' <'.$emaildelqueenvia.'>' . "\r\n";
if(@mail ($enviaraemail, $asunto, $cuerpodelmensajefinal, $headers)){if($haygracias==true){header("Location:".$fgwreturnurl);} else { echo "Muchas gracias por ponerte en contacto con nosotros! Tu mensaje fue enviado. Una persona de nuestra empresa se pondrá en contacto contigo a la brevedad.<p> </p>Continuá disfrutando nuestro sitio!";}} else { echo "No se ha podido enviar tu email. Por favor vuelve atras e intentalo nuevamente.";}}else{echo "Error: no se ha transferido ningún dato";die;
}
Enlaces relacionados
Tags relacionados
Aikido
Brazilian
Defensa Personal
Tai chi chuan
Valetodo
Ipod Iphone
Telefonos
Administracion
Empleo
Emprendedores
Gurues
Mercadeo
Motivacion
Temas Legales
Sony Vegas
Playstation
Trucos
PHP
Dreamweaver
Excel
Flash
Photoshop
PowerPoint
varios
Dietas
Enfermedades
Area de Usuarios
Bases de Datos
Buscadores
Compras
Correo Electronico
Evitando el Spam
Panel CPanel
Panel Plesk
Revendedores
Sobre mi dominio
Solucion de problemas
Subiendo mi sitio
Utilidades
Videos Rhosting
Terminos del Servicio - Politica de Privacidad - Ayuda a tus amigos, recomiendanos! - Contactanos
Todos los articulos de la seccion de Ayuda son Copyleft. Podes reproducirlos citando la fuente.
Producto Rhosting.com.ar- 1999 al 2008 - Resistencia - Chaco Las Malvinas son Argentinas