Foros del Web » Programando para Internet » PHP »

validar formulario PHP

Estas en el tema de validar formulario PHP en el foro de PHP en Foros del Web. Buenas, he realizado un formulario de contacto cuyos campos guardan los datos en una DDBB y a su los envían a una cuenta de correo ...
  #1 (permalink)  
Antiguo 09/06/2010, 05:47
 
Fecha de Ingreso: agosto-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 0
validar formulario PHP

Buenas,

he realizado un formulario de contacto cuyos campos guardan los datos en una DDBB y a su los envían a una cuenta de correo electrónico. Quiero validar los campos de teléfono (para que solo admita números) y mail (para que solo admita una dirección de correo electrónico). El código utilizado es el siguiente:

Código PHP:
Ver original
  1. /** conexion ***************************/
  2. // conectamos a la base de datos
  3.     include("conex.php");
  4.     $link=Conectarse();
  5.     if(!$link) {
  6.     die("Error al intentar conectar: ".mysql_error());
  7. }
  8. /** fin conexion ************************/
  9.  
  10. // recogemos el ID
  11. // del registro a actualizar
  12.  
  13.       if(isset($_POST['enviar']) && $_POST['enviar'] == 'enviar'){
  14. // comprobamos que no lleguen campos vacios
  15. if( !empty( $_POST['cliente']) && !empty( $_POST['nombre']) && !empty( $_POST['apellidos']) && !empty( $_POST['nombre_em']) && !empty( $_POST['sector']) && !empty( $_POST['postal']) && !empty( $_POST['telefono']) && !empty( $_POST['mail'])  && !empty( $_POST['interes']) && !empty( $_POST['otros']) && !empty( $_POST['consulta'])     ){
  16.  
  17. // creamos las variables
  18.  
  19. // y le asignamos sus valores
  20. $id = $_POST['id'];
  21.    $cliente=$_POST['cliente'];
  22.    $fecha=date('Y-m-d');
  23.    $nombre=$_POST['nombre'];
  24.    $apellidos=$_POST['apellidos'];  
  25.    $nombre_em=$_POST['nombre_em'];
  26.    $sector=$_POST['sector'];
  27.    $postal=$_POST['postal'];
  28.    $telefono=$_POST['telefono'];
  29.    $mail=$_POST['mail'];
  30.  if (is_array($_POST['interes']))
  31.    {
  32. $interes=implode(',',$_POST['interes']);
  33.     }
  34.    $otros=$_POST['otros'];
  35.    $consulta=$_POST['consulta'];
  36.  
  37.  
  38.  
  39. mysql_query("insert into formulario (cliente, fecha,nombre,apellidos,nombre_em,sector,postal,telefono,mail,interes,otros,consulta) values ('$cliente','$fecha','$nombre','$apellidos','$nombre_em','$sector','$postal','$telefono','$mail','$interes','$otros','$consulta')",$link)
  40. or die(mysql_error());
  41. echo "<div id='formulario'><p align='center'><br />Gracias por su consulta. En breve nos pondremos en contacto con usted.<div id='formulario'><p align='center'><br />";
  42.  
  43. }else{
  44. echo "<div id='formulario'><p align='center'><br /> Debe rellenar todos los campos.</p></div>"  ;
  45. }
  46. }else{
  47. // mostramos el mensaje
  48. echo "<p>".$mensaje."</p>";
  49. ?>
  50.  
  51.  
  52.  
  53.  
  54.  
  55.    <div id="formulario">
  56.      <form name="form1" id="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
  57.       <table>
  58.      <tr><td><h2>Particular<input type="radio" name="cliente"class="fondo_gris" id="particular"  value="particular" />
  59.         Empresa<input name="cliente" type="radio" class="fondo_gris" id="empresa"  value="empresa" checked />
  60.       </h2></td>        <td><tr></td></tr>
  61.     <tr><td>Nombre</td><td><input name="nombre" type="text" class="input"id="nombre" size="10"/></td>
  62.     <tr><td>Apellidos</td><td><input name="apellidos" type="text" class="input" id="apellidos" size="28" /></td>
  63.      <tr><td>Nombre de la empresa</td><td><input name="nombre_em" type="text" class="input" id="nombre_em" /></td></tr>
  64.       <tr><td>Sector</td><td><select name="sector" size="1" class="inputsector" id="sector">
  65.     <option value="administracion">Administración pública</option>
  66.     <option value="agricultura">Agricultura y animales</option>
  67.     <option value="alimentacion">Alimentación</option>
  68.     <option value="construccion">Construcción e inmobiliaria</option>
  69.     <option value="hosteleria">Hostelería y restauración </option>
  70.     <option value="industria">Industria</option>
  71.     <option value="teleco">Ingeniería, telecomunicaciones e informática</option>
  72.     <option value="medios">Medios de comunicación, artes gráficas y visuales</option>
  73.     <option value="mobiliario">Mobiliario y accesorios para el hogar</option>
  74.     <option value="ocio">Ocio, cultura y deportes</option>
  75.     <option value="profesiones">Profesiones, artes y oficios</option>
  76.     <option value="salud">Salud y belleza</option>
  77.     <option value="seguridad">Seguridad y defensa</option>
  78.     <option value="servicios">Servicios a las empresas</option>
  79.     <option value="textil">Textil, calzado y complementos </option>
  80.     </select></td></tr>
  81.        <tr><td>Dirección Postal</td><td><input name="postal" type="text" class="input" id="postal" size="30" /></td></tr>
  82.         <tr><td>Teléfono de contacto</td><td><input name="telefono" type="text" class="input" id="telefono" size="9" maxlength="9" /></td></tr>
  83.         <tr>
  84.           <td>Correo electrónico </td>
  85.           <td><input name="mail" type="text" class="input" id="mail" size="30" /></td></tr>
  86.        <tr><td><h2>Servicios de interés</h2></td></tr>
  87.        <tr><td> Diseño<input type="checkbox" name="interes[]3"  value="diseno" /></td></tr>
  88.        <tr><td> Vídeo <input type="checkbox" name="interes[]2" value="video" /></td></tr>
  89.        <tr><td> Web<input type="checkbox" name="interes[]" value="web" /></td></tr>
  90.        <tr><td class="otros">       Otros
  91.          </td>
  92.          <td><input name="otros" type="text" class="input" id="otros" size="20" /></td></tr>
  93.        <tr>
  94.    <td>Consulta</td>
  95.          <td><textarea name="consulta" cols="30" class="inputconsulta" id="consulta"></textarea>
  96.  
  97.       <tr><td></td><td><input name="enviar" type="submit" class="input" value="enviar"/></td></tr>
  98.     </table> </form>
  99.    
  100.  
  101. <?php } ?>

Hay algún fallo en el código y no se donde se encuentra. Si esos campos no están correctamente rellenados aparece el mensaje "Debe rellenar todos los campos".

Alguien puede echarme una mano?
  #2 (permalink)  
Antiguo 09/06/2010, 06:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: validar formulario PHP

No te puedo ayudar con lo del teléfono porque también soy novato, pero si que he encontrado por ahí y aplicado en mi web una validación del email completísima. Espero que te sirva. Ya veré las respuestas a lo del teléfono para aplicarlo yo también cuando se resuelva.

Utiliza un poco de javascript. Tan solo tienes que cambiar la variable $correo por la que tu tengas.

//aqui valido el email
function check_email_address($correo)
{
// Primero, checamos que solo haya un símbolo @, y que los largos sean correctos
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $correo))
{
// correo inválido por número incorrecto de caracteres en una parte, o número incorrecto de símbolos @
return false;
}
// se divide en partes para hacerlo más sencillo
$email_array = explode("@", $correo);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++)
{
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i]))
{
return false;
}
}
// se revisa si el dominio es una IP. Si no, debe ser un nombre de dominio válido
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1]))
{
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2)
{
return false; // No son suficientes partes o secciones para se un dominio
}
for ($i = 0; $i < sizeof($domain_array); $i++)
{
if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i]))
{
return false;
}
}
}
return true;
}
//aqui le hago el if a la validacion
if (check_email_address($correo))
{
echo ' ';
}
else
{
echo "<script>alert('El Email introducido no es válido. Inténtelo de nuevo');</script>";
echo "<script>history.go(-1);</script>";
exit;

}

//fin de la validacion del email
  #3 (permalink)  
Antiguo 09/06/2010, 08:46
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: validar formulario PHP

Esto te podria servir, para los numeros:

Código PHP:

//caracteres deseados
$numeros "0123456789";

//string literal
$num "123456c";

for(
$i=0$i<strlen($num); $i++){

if(
substr_count($numeros$num{$i}) == 0){
echo 
"No solo hay numeros, ";
echo 
"Se podria detener el cdigo con un exit()<br />";
}else{
echo 
"Solo hay numeros<br />";
}


  #4 (permalink)  
Antiguo 09/06/2010, 08:58
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: validar formulario PHP

Espero que te ayude, yo es lo que siempre utilizo.

Código PHP:
//para el email
if (!eregi('^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})$',$email)){
    echo 
"
    <script>alert('EL e-mail introducido no es valido')
        history.back(1);
    </script>"

}



//para el telefono
if (!(strlen($telefono)==9) || !(is_numeric($telefono))) {
    echo 
"
    <script>alert('El telefono debe tener 9 digitos.')
        history.back(1);
    </script>"


__________________
La mujer salió de la costilla del hombre,no de los pies para ser pisoteada,sino del lado para ser igual...Debajo del brazo para ser protegida y al lado del corazón para ser Amada...
  #5 (permalink)  
Antiguo 10/06/2010, 10:20
 
Fecha de Ingreso: agosto-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: validar formulario PHP

Gracias por vuestras respuestas. He probado vuestras opciones y no me funcionan.
No quiero que la página lleve nada de Javascript (por temas de accesibilidad.)

Alguna otra sugerencia? gracias
  #6 (permalink)  
Antiguo 10/06/2010, 10:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: validar formulario PHP

Bueno con JS es una buena opción. Si no quieres por ese lado la única forma seria validar con PHP y esto una vez que apretes el botón submit.

Salu2
__________________
No hay mail que por internet no venga

Etiquetas: campos, mensaje, validar, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:49.