Formulario de Contacto en PHP
Pués este es uno de los usos mas comunes en PHP+HTML un formulario de contacto, buzon de sugerencias, o como lo quieran llamar.
Así que abarcare este pequeño tema explciandoles como hacer un formulario, se les envie por correo y, le pida un captcha al usuario.
Primero que nada hay que definir que archivos vamos a crear.
contacto.html
El formulario en si, la interfaz de usuario
enviador.php
El motor, no se me ocurre otro nombre
captcha.php
Archivo que generara la imagen apra evitar algunos bots
Pués como lo primero que haremos sera el formulario pues ami me quedo asi.
Recuerden hoy es PHP y no diseño :rotfl:
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Contacto</title>
<style type="text/css">
<!--
.style1 {font-size: x-small}
-->
</style>
</head>
<body>
<form method="POST" action="enviador.php">
<p>Nombre:
<input type="text" name="nombre" size="19">
<br />
<br />
E-Mail:
<input type="text" name="email" size="19">
<br />
<br />
Mensaje:<br />
<textarea rows="9" name="mensaje" cols="30"></textarea>
<br />
<br />
<img src="captcha.php" /><input type="text" name="CAPTCHA" style="width: 50px;" />
<p style="padding-top: 5px;">
<p>
<input type="submit" value="Enviar" name="Enviar">
</p>
<p class="style1">Todos los campos son requeridos </p>
</form>
</body>
</html>
Ahora bien presten atención en el nombre de los inputs y asegurase que sea por método POST el formulario.
Ahora bien viene el enviador.php
Viene explicado con comentarios así que no debería haber problemas:
<?php
session_start();
if (isset($_POST['Enviar'])) {
/* Configuracion*/
//Desde: La direccion desde la cual se envia el correo
$desde = "no-reply@kernelerror.net";
//Para: Correo al cual quieres que llegue el mensaje
$para = "bacho@algo.com";
//Asunto: Asunto del Correo
$asunto = "Asunto";
//Campos mensaje nombre & correo: Consiguen las variables del formulario y las trnaforman a variables mas sencillas de usar
$campo_nombre = $_POST['nombre'];
$campo_correo = $_POST['email'];
$mensaje = $_POST['mensaje'];
$Captcha = (string) $_POST["CAPTCHA"];
//Comprueba Los campos no esten vacios
$requeridos = array('nombre', 'email', 'mensaje');
foreach ($requeridos as $requeridos) {
if (!isset($$requeridos) || $$requeridos == '') {
exit('Por favor, completa todos los campos obligatorios.');
}
}
//Comprueba el Captcha
if(sha1($Captcha) != $_SESSION["CAPTCHA"]) {
exit('Captcha erroneo.');
}
//Comprueba que el correo sea valido
if (!preg_match("/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/", $campo_correo)) {
exit('El formato del email ingresado no es correcto.');
}
//El cuerpo del correo a enviar a $para (Linea 9)
$cuerpo = "
De: $campo_nombren
Correo: $campo_correon
Mensaje:n $mensajen";
//Establece la razón $desde
$extra = "From: $desde";
//Envia el Correo
mail($para, $asunto, $cuerpo, $extra);
//Editar esta parta para después de enviar el mensaje
echo "Listo!";
/*
Descomentar para Debuggear
echo "
De: $campo_nombren
Correo: $campo_correon
Mensaje:n $mensajen
Desde: $desde";*/
}
else {
//Comando a ejecutar si se abre la pagina directamente
echo "No accedas directamente a esta pagina.";
}
?>
Recuerden que pueden editar el contenido a su gusto, ya sea editar los campos requeridos o que se ajuste a sus necesidades.
Finalmente el archivo captcha.php:
<?php
session_start();
// Genero el codigo y lo guardo en la sesión para consultarlo luego.
$codigo_captcha = substr(sha1(microtime() * mktime()), 0, 6);
$_SESSION['CAPTCHA'] = sha1($codigo_captcha);
// Genero la imagen
$imagen = imagecreatetruecolor(70, 25);
// Colores RGB
$ColorFondo = imagecolorallocate($imagen, 230, 230, 230);
$ColorLetra = imagecolorallocate($imagen, 90, 90, 90);
$ColorLinea = imagecolorallocate($imagen, 245, 245, 245);
// Fondo
imagefill($imagen, 0, 0, $ColorFondo);
imageline($imagen, 0, 5, 70, 5, $ColorLinea);
imageline($imagen, 0, 10, 70, 10, $ColorLinea);
imageline($imagen, 0, 15, 70, 15, $ColorLinea);
imageline($imagen, 0, 20, 70, 20, $ColorLinea);
imageline($imagen, 12, 0, 12, 25, $ColorLinea);
imageline($imagen, 24, 0, 24, 25, $ColorLinea);
imageline($imagen, 36, 0, 36, 25, $ColorLinea);
imageline($imagen, 48, 0, 48, 25, $ColorLinea);
imageline($imagen, 60, 0, 60, 25, $ColorLinea);
// Escribo el código
imageString($imagen, 5, 8, 5, $codigo_captcha, $ColorLetra);
// final.
header("Content-type: image/png");
imagepng($imagen);
?>
Como pueden ver, simplemente el truco esta en definir el archivo php como imagen PNG, y guardar el random como una variable.
¿Sencillo no? bien ahora les toca extenderlo, se puede fácilmente agregar la opción para editar la variable $desde para hacer un PHP-mailer desde una form, perfecto para recomendar o algo asi.
Saludos y feliz aniversario de Kernel Error
Posts Relacionados
- Creando un CAPTCHA Pués debido a mi entrada anterior, me gustaria dar a...
- Upload Form en PHP En esta entrada se explicará como hacer un form (ya...
- Enviar un correo con Adjunto mediante PHP Como dice el título de la entrada, hoy abarcaremos de...
- Reto PhP – Puede Pasarle a cualquier Programador El Problema Para este reto se usaron la herramienta de...
- Enviar correos desde Bash Pues en esta entrada les voy a compartir un pequeño...
- Textos Aleatoreos Con este sencillo script en PHP se puede dar a...
- Identificador de User Agent y SO en PHP Con esta entrada se intenta explicar como conseguir el User...



