Foros del Web » Programando para Internet » PHP »

Validar formulario antes de enviar a lservidor

Estas en el tema de Validar formulario antes de enviar a lservidor en el foro de PHP en Foros del Web. Hola ojala puedan ayudarme he creado un formulario que envia los datos a un Mail y funciona perfecto y ante de enviarlo comprueba que se ...
  #1 (permalink)  
Antiguo 05/09/2008, 09:42
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 11 meses
Puntos: 0
Sonrisa Validar formulario antes de enviar a lservidor

Hola ojala puedan ayudarme he creado un formulario que envia los datos a un Mail y funciona perfecto y ante de enviarlo comprueba que se hallan llenado los datos obligatorio y si no es asi muestra un mensaje.... todo funciona muy bien....

pero kisiera saber que le tengo que modificar para que no haga la comprobacion de si lo envio al Mail que compruebe si lo envio al servidor a una base de datos mysql y si es asi que el funciomanieto sea el mismo... es decir si no se envio al servidor que muestre los errores y eso..........

Este es el codigo del Scritp
Código PHP:
<?php if (array_key_exists('enviar',$_POST)) {

    
$para 'correo@loquesea';
    
$asunto 'contacto de visitante'
    
    
// eliminar caracteres escape de array POST
    
if (get_magic_quotes_gpc()) {
      function 
stripslashes_deep($value) {
    
$value is_array($value) ? array_map('stripslashes_deep'$value) : stripslashes($value);
    return 
$value;
    }
      
$_POST array_map('stripslashes_deep'$_POST);
      }

    
//Lista de archivos que se esperan
      
$esperado = array('nombre''ciudad''correo''tipo_contacto''texto');
      
//Configurar archivos obligatorios
      
$obligatorio = array('nombre''ciudad''correo''tipo_contacto''texto');
      
//Crear un array vacÃ*o para cualquier archivo perdido
      
$perdido = array();

    
//Procesar las variables $_POST
      
foreach ($_POST as $key => $value) {
      
//asignar a variable temporalmente y vacÃ*a espacio blanco si no un array
      
$temp is_array($value) ? $value trim($value);
      
//si vacÃ*o y obligatorio, añadir a array $perdido
      
if (empty($temp) && in_array($key$obligatorio)) {
          
array_push($perdido$key);
      }
      
//En otro caso, asignar a una variable del mismo nombre que $key
      
elseif (in_array($key$esperado)) {
      ${
$key} = $temp;
      }
      }

     
//Seguir solo si todos los campos requeridos están OK
      
if (empty($perdido)) {

    
    
// procesar las variales $_POST
    
$nombre $_POST['nombre'];
    
$ciudad $_POST['ciudad'];
    
$correo $_POST['correo'];
    
$tipo_contacto $_POST['tipo_contacto'];
    
$texto $_POST['texto'];
    
        
// crear mensaje
        
$mensaje "Nombre: $nombre\n\n";
        
$mensaje .= "Ciudad: $ciudad\n\n";
        
$mensaje .= "Correo: $correo\n\n";
        
$mensaje .= "Tipo de contacto: $tipo_contacto\n\n";
        
$mensaje .= "Texto: $texto\n\n";
    
    
// limitar tamaño de linea a 70 caracteres
    
$mensaje wordwrap($mensaje70);
    
    
// enviarlo
    
$enviarMail mail ($para$asunto$mensaje);  
    if (
$enviarMail) {
      
//$perdido deja de ser necesario si el email es enviado, asÃ* que lo destruimos con unset
      
unset($perdido);
      }
      }
    }
 
?>



Y esto lo que esta en el Form

<form id="form1" name="form1" method="POST" action="">
          <p align="center" class="textos_cabecitas">SISTEMA DE CONTACTO</p>
          <p align="center" class="textos_cabecitas">
            <?php if ($_POST && isset($perdido) && !empty($perdido)) {
?>
<p class="textos_contacto_fallo"> Por favor, completa los campos que se indican. </p>
<?php
}
elseif (
$_POST && !$enviarMail) {
?>
  <p class="textos_contacto_fallo">Lo siento, ha habido un problema enviando tu mensaje.</p>
<?php
  
}
elseif (
$_POST && $enviarMail) {
?>
<p class="textos_contacto_ok">Su mensaje ha sido enviado. Gracias por sus comentarios.</p>
<?php }?> 

          </p>
          <table width="395" border="0" align="center">
            <tr bgcolor="#990000" class="textos_standar_blanco">
              <td colspan="2">Por favor deja tus datos personales</td>
              </tr>
            <tr class="textos_standar_negro">
              <td width="179">Nombre y apellido</td>
              <td width="206"><label> 
              <?php if (isset($perdido) && in_array('nombre'$perdido)) { ?>
    <span class="textos_contacto_obligatorio">Por favor, escriba su Nombre</span><?php ?>
                <input type="text" name="nombre" id="nombre" 
                <?php if (isset($perdido)) {
                echo 
'value=" '.htmlentities($_POST['nombre']).' " ';
                }
                 
?>
                />
              </label></td>
            </tr>
            <tr class="textos_standar_negro">
              <td>Ciudad</td>
              <td><label> <?php if (isset($perdido) && in_array('ciudad'$perdido)) { ?>
    <span class="textos_contacto_obligatorio">Por favor, escriba su ciudad</span><?php ?>
                <input type="text" name="ciudad" id="ciudad" 
                <?php if (isset($perdido)) {
                echo 
'value=" '.htmlentities($_POST['ciudad']).' " ';
                }
                 
?>

                />
              </label></td>
            </tr>
            <tr class="textos_standar_negro">
              <td>Correo electr&oacute;nico</td>
              <td><label> <?php if (isset($perdido) && in_array('correo'$perdido)) { ?>
    <span class="textos_contacto_obligatorio">Por favor, escriba su Correo</span>
    <?php ?>
                <input type="text" name="correo" id="correo" 
                <?php if (isset($perdido)) {
    echo 
'value=" '.htmlentities($_POST['nombre']).' " ';
    }
     
?>
                />
              </label></td>
            </tr>
            <tr class="textos_standar_negro">
              <td>Tipo de contacto</td>
              <td><label> <?php if (isset($perdido) && in_array('tipo_contacto'$perdido)) { ?>
    <span class="textos_contacto_obligatorio">Por favor, seleccione una opcion</span><?php ?>
                <select name="tipo_contacto" id="tipo_contacto">
                  <option>Queja</option>
                  <option>Felicitaci&oacute;n</option>
                  <option>Observacion</option>
                  <option>Sugerencia</option>
                  <option>Cr&iacute;tica</option>
                  <option>Falla de p&aacute;gina</option>
                                </select>
              </label></td>
            </tr>
            <tr>
              <td colspan="2">&nbsp;</td>
            </tr>
            <tr bgcolor="#990000" class="textos_standar_blanco">
              <td colspan="2">Sobre qu&eacute; deseas mandarnos tu correo
                <label></label></td>
              </tr>
            <tr>
              <td colspan="2"><label> <?php if (isset($perdido) && in_array('texto'$perdido)) { ?>
    <span class="textos_contacto_obligatorio">Por favor, escriba su mensaje</span><?php ?>
                <textarea name="texto" id="texto" cols="45" rows="5"><?php if (isset($perdido)) {
    echo 
htmlentities($_POST['texto']);
    }
?></textarea>

              </label></td>
            </tr>
            <tr>
              <td colspan="2"><label>
                <input type="submit" name="enviar" id="enviar" value="Enviar" />
              </label></td>
            </tr>
          </table>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
        </form>

Última edición por GatorV; 05/09/2008 a las 10:42
  #2 (permalink)  
Antiguo 06/09/2008, 03:47
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 5 meses
Puntos: 25
Respuesta: Validar formulario antes de enviar a lservidor

puedes controlar los errores al ejecutar el script sql con

Código PHP:
$sql "insert into ...";
if (
mysql_query($sql))
  echo 
"oky";
else
  echo 
"error"
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 04:12.