Foros del Web » Programando para Internet » PHP »

Duda con formulario php

Estas en el tema de Duda con formulario php en el foro de PHP en Foros del Web. Estoy haciendo un formulario en php y se me ha planteado un problema, cuando el usuario por ejemplo no inserta su nombre el formulario me ...
  #1 (permalink)  
Antiguo 19/11/2009, 01:25
 
Fecha de Ingreso: marzo-2006
Mensajes: 133
Antigüedad: 18 años, 1 mes
Puntos: 6
Duda con formulario php

Estoy haciendo un formulario en php y se me ha planteado un problema, cuando el usuario por ejemplo no inserta su nombre el formulario me da un error y me dice que inserte el nombre, el problema es que quiero que los datos ya introducidos anteriormente por el usuario sigan estando y no se me borren de manera que unicamente tenga que introducir de nuevo el usuario los datos incorrectos...

No se si me explique muy bien.

Os pego el codigo para que os hagais una idea de lo que tengo:

Tengo por una parte el archivo registro.php con el formulario de la siguiente forma:

<form action="registro/validar.php" method="post" name="registro">


Y ahora tengo el archivo validar que contiene lo siguiente:

<? session_start();

include "conexionBD.php";

$nombre = $_POST['Nombre'];
$apellidos = $_POST['apellidos'];
$dni = $_POST['dni'];
$direccion = $_POST['direccion'];
$email = $_POST['email'];
$contrasena = $_POST['contrasena'];
$poblacion = $_POST['poblacion'];
$provincia = $_POST['provincia'];
$codpostal = $_POST['codpostal'];
$nick = $_POST['nick'];
$sexo = $_POST['sexo'];
$telefono = $_POST['telefono'];
$captcha = $_POST['caracteres'];
$fechaalta = date("Y-m-d");

if ($nombre == "")
{
header("Location: ../registro.php?errorusuario=si");
}
elseif ($apellidos == "")
{
header("Location: ../registro.php?errorusuario1=si");
}
elseif ($direccion == "")
{
header("Location: ../registro.php?errorusuario3=si");
}
elseif ($email == "")
{
header("Location: ../registro.php?errorusuario4=si");
}
elseif ($confirma_email == "")
{
header("Location: ../registro.php?errorusuario5=si");
}
elseif ($email != $confirma_email)
{
header("Location: ../registro.php?errorusuario6=si");
}
elseif ($contrasena == "")
{
header("Location: ../registro.php?errorusuario7=si");
}
elseif ($confirma_contrasena == "")
{
header("Location: ../registro.php?errorusuario8=si");
}
elseif ($contrasena != $confirma_contrasena)
{
header("Location: ../registro.php?errorusuario9=si");
}
elseif ($poblacion == "")
{
header("Location: ../registro.php?errorusuario10=si");
}
elseif ($provincia == "")
{
header("Location: ../registro.php?errorusuario11=si");
}
elseif ($nick == "")
{
header("Location: ../registro.php?errorusuario2=si");
}
elseif ($pais == "")
{
header("Location: ../registro.php?errorusuario12=si");
}


elseif ($_SESSION['tmptxt'] == $captcha) {

$conexion = mysql_connect($localhost,$usuario,$contrasena);
mysql_select_db($bd,$conexion);

// Con esta sentencia SQL insertaremos los datos en la base de datos
mysql_query("INSERT INTO `usuario` ( `nombre`, `apellidos`, `dni`, `direccion`, `email`, `contrasena`, `poblacion`, `provincia`, `codpostal`, `nick`, `sexo`, `telefono`, `caracteres`, `Fechaalta`) VALUES
('$nombre', '$apellidos' , '$dni', '$direccion', '$email', NULL, NULL, '$contrasena', NULL, '$poblacion', '$provincia', NULL, '$codpostal', '$nick' , '$sexo' ,'$telefono' ,'$caracteres' ,'$fechaalta' , NULL, NULL);",$conexion);

// Ahora comprobaremos que todo ha ido correctamente
$my_error = mysql_error($conexion);

if(!empty($my_error))
{
echo "Ha habido un error al insertar los valores. $my_error";
}else {
echo "Los datos han sido introducidos satisfactoriamente en la base de datos.";
}


} else {
header("Location: ../registro.php?errorusuario13=si");
}



?>



Error de usuario lo estoy definiendo en registro.php de la siguiente forma:


<? if ($_GET["errorusuario1"]=="si") {?>

<span class="Estilo39">Introduzca sus apellidos</span><br />

<?}?>




Imagino que no sera la forma mas correcta de hacer esto, es la primera vez que programo en php, pero lo intento, ahora lo que me hace falta es saber que tengo que hacer para que cuando me de uno de los mensajes de error no borre el texto del formulario que ya haya introducido el usuario.

Muchas gracias les agradeceria mucho su ayuda.
  #2 (permalink)  
Antiguo 19/11/2009, 02:18
 
Fecha de Ingreso: febrero-2009
Mensajes: 44
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: Duda con formulario php

Para validar un formulario, lo primera etapa se hace con Javascript. Así el usuario tiene más rápido una alerta con los campos errados, además de no enviar peticiones al servidor porque si.
Una vez validado por la función(es) javascript correspondiente, se envian los datos al servidor y con PHP, para este caso, se vuelven a validar los datos para evitar el SQLInyection. Con esto podemos decir que si ya paso la validacion del JS deberia pasar tambien la de PHP, ya que esta ultima es para prevenir ataques.
Ahora, cuando valides, te recomiendo recibir todos los datos y enviar siempre todos los errores encontrados juntos con los datos aprobados, asi el usuario no debe ir y venir al servidor tantas veces.

Saludos
  #3 (permalink)  
Antiguo 19/11/2009, 11:55
 
Fecha de Ingreso: marzo-2006
Mensajes: 133
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: Duda con formulario php

Cita:
Iniciado por eseceve Ver Mensaje
Ahora, cuando valides, te recomiendo recibir todos los datos y enviar siempre todos los errores encontrados juntos con los datos aprobados, asi el usuario no debe ir y venir al servidor tantas veces.

Saludos
He realizado la validación como me has dicho y perfecto, lo que no entiendo muy bien es esto ultimo que me recomiendas, me lo podrias explicar un poquito para dummies (torpes como yo jeje)

muchas gracias me has servido de mucha ayuda.
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 06:18.