Formulario de contacto en PHP

Sencillo formulario de contacto en PHP. Primero declaramos las condiciones para poder enviar un mensaje (if / else) y si no se cumplen devuelven un error, entre ellas un control de SPAM. Podemos jugar con el estilo (CSS) para darle el aspecto deseado, os dejo un ejemplo al final de la entrada.

Para entender mejor la programación en PHP recomiendo visitar:

<div id="contentForm">
<!-- The contact form starts from here-->
<?php
$error = ''; // error message
$name = ''; // sender's name
$email = ''; // sender's email address
$subject = ''; // subject
$message = ''; // the message itself
$spamcheck = ''; // Spam check

if(isset($_POST['send']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$spamcheck = $_POST['spamcheck'];

if(trim($name) == '')
{
$error = '<div class="errormsg">Please enter your name!</div>';
}
else if(trim($email) == '')
{
$error = '<div class="errormsg">Please enter your email address!</div>';
}
else if(!isEmail($email))
{
$error = '<div class="errormsg">You have enter an invalid e-mail address. Please, try again!</div>';
}
if(trim($subject) == '')
{
$error = '<div class="errormsg">Please enter a subject!</div>';
}
else if(trim($message) == '')
{
$error = '<div class="errormsg">Please enter your message!</div>';
}
else if(trim($spamcheck) == '')
{
$error = '<div class="errormsg">Please enter the number for Spam Check!</div>';
}
else if(trim($spamcheck) != '5')
{
$error = '<div class="errormsg">Spam Check: The number you entered is not correct! 2 + 3 = ???</div>';
}
if($error == '')
{
if(get_magic_quotes_gpc())
{
$message = stripslashes($message);
}

// the email will be sent here
// make sure to change this to be your e-mail
$to = "escribetucorreo@correo.com";

// the email subject
// '[Contact Form] :' will appear automatically in the subject.
// You can change it as you want

$subject = '[Contact Form] : ' . $subject;

// the mail message ( add any additional information if you want )
$msg = "From : $name \r\ne-Mail : $email \r\nSubject : $subject \r\n\n" . "Message : \r\n$message";

mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");
?>

<!-- Message sent! (change the text below as you wish)-->
<div style="text-align:center;">
<p>Gracías <b><?=$name;?></b>, su mensaje ha sido enviado.</p>
</div>
<!--End Message Sent-->
<?php
}
}
if(!isset($_POST['send']) || $error != '')
{
?>
<!--Error Message-->
<?=$error;?>
<form method="post" name="contFrm" id="contFrm" action="">
<fieldset>
<legend>Datos Personales &raquo;</legend>
<label><span class="required">*</span> Nombre:</label>
<input name="name" type="text" class="box" id="name" size="30" value="<?=$name;?>" />

<label><span class="required">*</span> e-mail: </label>
<input name="email" type="text" class="box" id="email" size="30" value="<?=$email;?>" />

<label><span class="required">*</span> Spam Check: <b>2 + 3 =</b></label>
<input name="spamcheck" type="text" class="box" id="spamcheck" size="4" value="<?=$spamcheck;?>" /><br /><br />

<!-- Submit Button-->
<input name="send" type="submit" class="button" id="send" value="Enviar" />
</fieldset>
<fieldset>
<legend>Mensaje &raquo;</legend>
<label><span class="required">*</span> Asunto: </label>
<input name="subject" type="text" class="box" id="subject" size="30" value="<?=$subject;?>" />

<label><span class="required">*</span> Mensaje: </label>
<textarea name="message" cols="40" rows="3" id="message"><?=$message;?></textarea>
</fieldset>
</form>
<!-- E-mail verification. Do not edit -->
<?php
}
function isEmail($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$email));
}
?>
<!-- END CONTACT FORM -->
</div> <!-- /contentForm -->

Hoja de estilo de ejemplo:
#contentForm {
width: 700px;
margin: 10px auto 10px auto;
}
form {
font-family: Verdana, Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
}
fieldset {
float : left;
margin : 0 0.5em 0 0.5em;
padding : 1em;
border : 1px solid #ccc;
background : #f1f8f6;
}
fieldset div {
width : 180px;
border : 0 solid #ccc;
margin : 0 auto 0 auto;
padding : 1px;
}
* html fieldset div {
width : 200px;
width : 180px;
}
fieldset div input {
width : 176px;
border : 3px double #ccc;
padding : 1px;
}
* html fieldset div input {
width : 180px;
width : 176px;
}
fieldset div br {
display : none;
}
legend {
font-weight : bold;
color : #333;
margin : 0;
}
label {
display : block;
}
input {
width : 180px;
background : #fafbfc;
border : 3px double #ccc;
}
input#counter {
margin : 0;
border : 3px double #ccc;
font-size : 100%;
}
input#submit {
border : 3px double #ccc;
padding : 0.25em;
background : #f1f8f6 url(images/submit.jpg) repeat-x;
margin : 5px 4px 5px 4px;
color : #333;
font-weight : bold;
font-family : Verdana, Helvetica, Arial, sans-serif;
}
input#counter:active, input#submit:active {
border : 3px double #ccc;
}
textarea {
padding : 0;
margin : 5px auto 10px auto;
background : #fafbfc;
border : 3px double #ccc;
width : 400px;
height : 180px;
}
input:hover, textarea:hover {
background : #fff;
}
input:focus, textarea:focus {
border : 3px double #666;
background : #fff;
}

No hay comentarios:

Publicar un comentario