Comunidad de diseño web y desarrollo en internet online

como validar mi formulario de correo

Citar            
MensajeEscrito el 28 Ene 2014 06:11 pm
Hola... saludos a todos en el foro. Mi inquietud es la siguiente:

Tengo un formulario el cual adjunta archivos para ser enviados, el problema es que mi cliente quiere que adicionalmente valide que la información colocada en cada campo sea el correcto. Este es mi formulario:
<form name='formulario' id='formulario' method='post' action='enviar.php' target='_self' enctype="multipart/form-data">
<table width="100%" border="0" cellpadding="5" cellspacing="0">
<tr>
<td width="8%"><div class="textarea" align="right">Nombre</div></td>
<td colspan="2"><input class="input" name="nombre" type="text" id="nombre" value="" size="80" /></td>
</tr>
<tr>
<td><div class="textarea" align="right">E-mail</div></td>
<td colspan="2"><input class="input" name="email" type="text" id="email" value="" size="25" /></td>
</tr>
<tr>
<td><div class="textarea" align="right">Asunto</div></td>
<td colspan="2"><input class="input" name="asunto" type="text" id="asunto" value="" /></td>
</tr>
<tr>
<td valign="top"><div class="textarea" align="right">Mensaje</div></td>
<td colspan="2" valign="top"><textarea class="input" name="mensaje" cols="59" rows="4" id="mensaje"></textarea></td>
</tr>
<tr>
<td><div class="textarea" align="right">Adjuntar archivo</td>
<td colspan="3"><input type='file' name='archivo1' id='archivo1'></td>
</tr>
<tr><input class="boton" name="Submit" type="submit" </td>
<td><input type='submit' value='Enviar' ></td>
</tr>
</table>
</form>

Y este es mi archivo donde recojo la información:

<?php
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";
if ($sDe)$sCabeceras = "From:".$sDe."\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;
foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
$bHayFicheros = 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
$sTexto = $sCabeceraTexto.$sTexto;
}
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}
if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
}
//cambiar aqui el email
if (form_mail("[email protected]", $_POST[asunto],
"Los datos introducidos en el formulario son:\n\n", $_POST[email]))
header ('Location: contacto_trabaja_ok.php');
//echo "Su formulario ha sido enviado con exito";
?>

Pero no se como colocarle validación a mis campo, si alguien me puede echar una mano se lo agradecería en el alma.

Gracias de antemano

Por ecoloco2

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ene 2014 06:33 pm
¿Cuáles serían los criterios de validación?.

Por ejemplo. Para la dirección de correo una función que determine que la dirección es válida sería:

Código PHP :

   function is_email($Addr) {
      $p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
      $p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
      $p.= '|info|arpa|aero|coop|name|museum)$/ix';
      return preg_match($p, $Addr);
   } // is_email

Devuelve true o false dependiendo de si la cadena que se pasa como parámetro es una dirección de correo electrónico bien formada, pero no dice si la dirección existe (eso no se puede saber si no es enviando un correo y esperando la respuesta).

Tienes un campo "nombre", ¿necesitas que el dato tenga sentido o basta con que no ingresen caracteres que no pueden ser un nombre (como los números)?.

¿El archivo adjunto debe ser de algún tipo especial?, ¿de algún tamaño límite?. Etc...

Un cosejo: No uses la función mail(), mejor usa phpmailer.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 28 Ene 2014 06:42 pm
Hola DriverOp, y muchas gracias por tu pronta respuesta, el cliente lo que requiere es que se valide que la dirección de correo este correcta y que en el resto de caracteres no estén en blanco.

Por ecoloco2

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ene 2014 06:51 pm
Pues simplemente haz pasar los datos del array $_POST por un par de funciones de verificación. Por ejemplo:

Código PHP :

$nombre = substr(trim(@$_POST['nombre']),0,80);
if (strlen($nombre) == 0) {
   echo "Nombre no puede estar vacío";
}

(A partir de aquí usa la variable $nombre, no $_POST['nombre']).
Así procede con el resto de los campos.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.