Foros del Web » Programando para Internet » PHP »

Validar un formulario

Estas en el tema de Validar un formulario en el foro de PHP en Foros del Web. Hola Tengo un formulario y quisiera validar con php. Este seria el formulario: <form action="enviar.php" method="POST" id="formulario"> <p> <input name="nombre" type="text" id="nombre" placeholder="Nombre" /></p> <p> ...
  #1 (permalink)  
Antiguo 26/11/2015, 15:44
 
Fecha de Ingreso: enero-2015
Mensajes: 26
Antigüedad: 9 años, 3 meses
Puntos: 0
Validar un formulario

Hola

Tengo un formulario y quisiera validar con php.

Este seria el formulario:

<form action="enviar.php" method="POST" id="formulario">
<p> <input name="nombre" type="text" id="nombre" placeholder="Nombre" /></p>
<p> <input name="email" type="email" id="email" placeholder="Email"/></p>
<p><input name="tema" type="text" id="tema" placeholder="Asunto"/></p>
<p><textarea name="consulta" id="consulta" placeholder="Mensaje"/></textarea></p>
<p><input name="Enviar" type="submit" class="enviar" id="Enviar" title="Enviar" value="Enviar" onClick="validar()"></p>
</form>

Valicacion javascript:

function validar(){
var vnom=document.getElementById("nombre").value
var vemail=document.getElementById("email").value
var vasunto=document.getElementById("asunto").value
if (vnom == ""){
alert("ERROR: introduce tu Nombre")
}else{
if (vemail == ""){
alert("ERROR: introduce tu Email")
}else{
if (vasunto == ""){
alert("ERROR: introduce el asunto")
}else{formulario.submit()
}
}
}
}


Y esto el php:

<?php
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$tema = $_POST['tema'];
$consulta = $_POST['consulta'];

$header = 'From: ' . $email . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por: " . $nombre . " \r\n";
$mensaje .= "Su e-mail es: " . $email . " \r\n";
$mensaje .= "Mensaje: " . $_POST['consulta'] . " \r\n";


$para = '[email protected]';
$tema = 'Asunto del mail recibido'. $tema .


mail($para, $tema, utf8_decode($mensaje), $header);


echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=http://xxxxxxx.es\">";
?>

Lo de CONTENT: lo he puesto para que al pinchar en el boton "enviar" los campos aparezcan vacios de nuevo. seguro que hay otro metodo pero no tengo ni idea, estoy aprendiendo por mi cuenta muy poco a poco.

Agradeceria cualquier critica para mejorar, claro

Muchas gracias

marina

Última edición por marinamarina; 26/11/2015 a las 15:50
  #2 (permalink)  
Antiguo 26/11/2015, 16:04
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Validar un formulario

Yo tengo una forma de validar los campos vacios al menos me resulta


esto en tu codigo php


Código PHP:
Ver original
  1. <?
  2. function validar($form_vars, $action) {
  3.     $vararray = explode(',',$form_vars);
  4.     foreach ($vararray as $var)     {
  5.     $var = trim($var);
  6.     if (!$action[$var]) return false; }
  7.     return true; }
  8. ?>
  9.  
  10.  
  11. <?
  12.     if (!validar('nombre,email,tema,consulta', $_POST)) {
  13.     echo "campos vacios, <a href='/'>Volver</a>";
  14.     exit;   }      
  15.    
  16. ?>
  #3 (permalink)  
Antiguo 26/11/2015, 16:09
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Validar un formulario

Aqui tienes un ejemplo personalizas los nombres si gustas

funciones.js

Código PHP:
Ver original
  1. <script>
  2. $(function() {
  3.     var emailreg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;  
  4.     $(".boton").click(function(){  
  5.         $(".error").fadeOut().remove();
  6.        
  7.         if ($(".nombre").val() == "") {  
  8.             $(".nombre").focus().after('<span class="error">Ingrese su nombre</span>');  
  9.             return false;  
  10.         }  
  11.         if ($(".email").val() == "" || !emailreg.test($(".email").val())) {
  12.             $(".email").focus().after('<span class="error">Ingrese un email correcto</span>');  
  13.             return false;  
  14.         }  
  15.         if ($(".asunto").val() == "") {  
  16.             $(".asunto").focus().after('<span class="error">Ingrese un asunto</span>');  
  17.             return false;  
  18.         }  
  19.         if ($(".mensaje").val() == "") {  
  20.             $(".mensaje").focus().after('<span class="error">Ingrese un mensaje</span>');  
  21.             return false;  
  22.         }  
  23.     });  
  24.     $(".nombre, .asunto, .mensaje").bind('blur keyup', function(){  
  25.         if ($(this).val() != "") {             
  26.             $('.error').fadeOut();
  27.             return false;  
  28.         }  
  29.     });
  30.     $(".email").bind('blur keyup', function(){  
  31.         if ($(".email").val() != "" && emailreg.test($(".email").val())) { 
  32.             $('.error').fadeOut();  
  33.             return false;  
  34.         }  
  35.     });
  36. });
  37. </script>

Formulario
Código PHP:
Ver original
  1. <?php
  2.     if(isset($_POST['boton'])){
  3.         if($_POST['nombre'] == ''){
  4.             $errors[1] = '<span class="error">Ingrese su nombre</span>';
  5.         }else if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
  6.             $errors[2] = '<span class="error">Ingrese un email correcto</span>';
  7.         }else if($_POST['asunto'] == ''){
  8.             $errors[3] = '<span class="error">Ingrese un asunto</span>';
  9.         }else if($_POST['mensaje'] == ''){
  10.             $errors[4] = '<span class="error">Ingrese un mensaje</span>';
  11.         }else{
  12.             $dest = "[email protected]"; //Email de destino
  13.             $nombre = $_POST['nombre'];
  14.             $email = $_POST['email'];
  15.             $asunto = $_POST['asunto']; //Asunto
  16.             $cuerpo = $_POST['mensaje']; //Cuerpo del mensaje
  17.             //Cabeceras del correo
  18.             $headers = "From: $nombre <$email>\r\n"; //Quien envia?
  19.             $headers .= "X-Mailer: PHP5\n";
  20.             $headers .= 'MIME-Version: 1.0' . "\n";
  21.             $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
  22.  
  23.             if(mail($dest,$asunto,$cuerpo,$headers)){
  24.                 $result = '<div class="result_ok">Email enviado correctamente </div>';
  25.                 // si el envio fue exitoso reseteamos lo que el usuario escribio:
  26.                 $_POST['nombre'] = '';
  27.                 $_POST['email'] = '';
  28.                 $_POST['asunto'] = '';
  29.                 $_POST['mensaje'] = '';
  30.             }else{
  31.                 $result = '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
  32.             }
  33.         }
  34.     }
  35. ?>
  36. <html>
  37.     <head>
  38.         <title>Contacto</title>
  39.         <link rel='stylesheet' href='estilos.css'>
  40.         <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
  41.         <script src='funciones.js'></script>
  42.     </head>
  43.     <body>
  44.         <form class='contacto' method='POST' action=''>
  45.             <div><label>Tu Nombre:</label><input type='text' class='nombre' name='nombre' value='<?php if(isset($_POST['nombre'])){ echo $_POST['nombre']; } ?>'><?php if(isset($errors)){ echo $errors[1]; } ?></div>
  46.             <div><label>Tu Email:</label><input type='text' class='email' name='email' value='<?php if(isset($_POST['email'])){ $_POST['email']; } ?>'><?php if(isset($errors)){ echo $errors[2]; } ?></div>
  47.             <div><label>Asunto:</label><input type='text' class='asunto' name='asunto' value='<?php if(isset($_POST['asunto'])){ $_POST['asunto']; } ?>'><?php if(isset($errors)){ echo $errors[3]; } ?></div>
  48.             <div><label>Mensaje:</label><textarea rows='6' class='mensaje' name='mensaje'><?php if(isset($_POST['mensaje'])){ $_POST['mensaje']; } ?></textarea><?php if(isset($errors)){ echo $errors[4]; } ?></div>
  49.             <div><input type='submit' value='Envia Mensaje' class='boton' name='boton'></div>
  50.             <?php if(isset($result)) { echo $result; } ?>
  51.         </form>
  52.     </body>
  53. </html>
  #4 (permalink)  
Antiguo 26/11/2015, 16:35
 
Fecha de Ingreso: enero-2015
Mensajes: 26
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Validar un formulario

Gracias a los dos.
Probare los dos.
PILUCHO, una pregunta, ese codigo que me pones donde debo colocar? en el codigo php que tengo? al final?

seguro que es una pregunta tontisima, pero ya os digo que estoy aprendiendo.

Gracias
  #5 (permalink)  
Antiguo 26/11/2015, 17:02
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Validar un formulario

En tu formulario PHP enviar.php
  #6 (permalink)  
Antiguo 26/11/2015, 17:10
 
Fecha de Ingreso: enero-2015
Mensajes: 26
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Validar un formulario

Genial y ya por ultimo, si quiero que el mensaje en vez de que me salga en otra pagina, si quisiera que el mensaje fuera un alert?

Cita:
Iniciado por pilucho Ver Mensaje
En tu formulario PHP enviar.php
  #7 (permalink)  
Antiguo 28/11/2015, 16:33
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Validar un formulario

Cita:
Iniciado por marinamarina Ver Mensaje
Genial y ya por ultimo, si quiero que el mensaje en vez de que me salga en otra pagina, si quisiera que el mensaje fuera un alert?
Con el codigo que te puse, pues ahi obtines las alertas en la misma pagina, con la opcion de funciones.js, solo es adaptar el codigo con los campos que ya tienes.
  #8 (permalink)  
Antiguo 29/11/2015, 13:45
 
Fecha de Ingreso: enero-2015
Mensajes: 26
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Validar un formulario

Ok, lo pruebo ahora. ya te contare :)

mil gracias

Cita:
Iniciado por pilucho Ver Mensaje
Con el codigo que te puse, pues ahi obtines las alertas en la misma pagina, con la opcion de funciones.js, solo es adaptar el codigo con los campos que ya tienes.
  #9 (permalink)  
Antiguo 29/11/2015, 14:36
 
Fecha de Ingreso: enero-2015
Mensajes: 26
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Validar un formulario

Pues nada, soy un desastre
  #10 (permalink)  
Antiguo 29/11/2015, 20:50
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Validar un formulario

Cita:
Iniciado por marinamarina Ver Mensaje
Pues nada, soy un desastre
Copiaste la validacion en tu php?

o probaste el otro codigo que te puse?
  #11 (permalink)  
Antiguo 30/11/2015, 04:39
 
Fecha de Ingreso: enero-2015
Mensajes: 26
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Validar un formulario

Si que lo copie el segundo que pusiste, todo y nada. Seguro que pongo algo mal

Etiquetas: 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 19:20.