Jump to content

Comprobar campos de un formulario sólo con php


Recommended Posts

hola estoy haciendo un formulario q funciona bajo php

el metodo es este

 

<form action="datos.php" method="POST">

 

vale pues relleno los campos y la pagina datos.php me lo procesa perfectamente

 

pero lo q pasa es q tengo unos campos q quiero q se rellenen obligatoriamente

y si no se rellenan q el formulario no de paso a datos.php

se q se hace con condicionales pero no me acuerdo

las variables q tienen q tener valor serian

nombre

contacto

telefono

incidencia

 

muchas gracias y saludos

Edited by mork
Link to post
Share on other sites

El sistema que utilizo es el siguiente (no sé si sabré explicarlo bien...):

 

En la página antes que nada llamo a un script externo, o sea, en la primera línea nos encontramos con esto:

<?php include_once ("core/inici_sessio.php"); ?>

 

Este sería el código que estaría en inici_sessio.php:

<?php
// iniciamos una sesion
session_start ();
/*
  comprobamos si se esta enviando el formulario utilizando un campo 
  invisible (en este ejemplo tipus_registre). Si no se esta enviando datos
  el script no hace nada y muestra la pagina actual

*/
if (isset($_POST['tipus_registre'])){
   /*
   
       Creo una variable de sesion con un mensaje que si se llena, solo lo hace
       si se dan errores, se puede utilizar para avisar al usuario con un script javascript
   
   */
   $_SESSION['current_message'] = "";
   $separa = "";
   $separa_multiple = ". ";

   /* ejemplos de validaciones que dan error si se cumplen */
   
   // comprovar e-mail con una expresion REGEX
   if (!preg_match ("/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/",$_POST['email'])){
       $_SESSION['current_message'] .= $separa . "The e-mail address is not valid";
       $separa = $separa_multiple;
   }

   // comprobar que el campo tenga + de 4 letras    
   if (strlen ($_POST['passwd']) < 5){
       $_SESSION['current_message'] .= $separa . "Code and password must have a length larger than 5 characters";
       $separa = $separa_multiple;
   }
   
   /* fin ejemplo validaciones */
   
   
   // todo correcto si el mensaje esta vacio
   if ($_SESSION['current_message'] == ""){
       
       /*
       
           Aqui iria el codigo que tuvieses en datos.php
       
       */
       
       // con esta linea enviamos el script a la página de respuesta y no continuamos con la pagina actual
       header ("Location: http://".$_SERVER['HTTP_HOST'].'/respuesta.php');
       // nos aseguramos que no se seguira realizando ninguna accion (aqui ya entramos en codigo paranoico ;-) )
       exit;
   }
}
?>

 

Ya en la página en lugar de llamar a datos.php o cualquier otro script php llamo a la misma página con este código:

<form action="<?php print $_SERVER['PHP_SELF'];  ?>" name="registre" method="post">

 

Cuando defino los campos a rellenar, añado un código php para que se mantengan los datos que hubiese podido introducir el usuario en un intento fallido anterior:

<input name="nombre" type="text" size="30" <?php if (isset($_POST['nom'])){ print 'value="' . $_POST['nom'] . '"'; } ?> />

 

Y al final de la página pongo un script javascript con un link como este:

<script language="JavaScript" type="text/javascript" src="core/dona_missatge.php"></script>

 

El contenido de dona_missatge.php, que hemos llamado en el código anterior, es el siguiente:

<?php
session_start ();
if (!empty($_SESSION['current_message'])){
?>
alert ('<?php print $_SESSION['current_message']; ?>');
<?php
$_SESSION['current_message'] = "";
}
?>

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.