Foros del Web » Programando para Internet » PHP »

Validación formulario de contacto usando Header+$_POST+$_GET

Estas en el tema de Validación formulario de contacto usando Header+$_POST+$_GET en el foro de PHP en Foros del Web. Hola amigos. Tengo un problema el cual comparto con ustedes, he hecho 2 archivos en php uno llamado registro.php y otro llamado validar_registro.php . Obvio ...
  #1 (permalink)  
Antiguo 11/11/2010, 16:07
 
Fecha de Ingreso: noviembre-2010
Mensajes: 14
Antigüedad: 13 años, 5 meses
Puntos: 1
Pregunta Validación formulario de contacto usando Header+$_POST+$_GET

Hola amigos.
Tengo un problema el cual comparto con ustedes, he hecho 2 archivos en php uno llamado registro.php y otro llamado validar_registro.php.
Obvio en el primer archivo tengo todo el diseño y controles que usa un formulario de contacto usando el método de envío="POST"y action="validar_registro.php".

Envío toda la info. al archivo llamado validar_registro.php, y verifico que los controles (cuadros de texto+cuadros de lista) no estén vacíos, usando condicional IF (anidada para abarcar todos los controles), si estan vacíos o su información es incorrecta, los regreso al archivo registro.php usando Header y enviando los parámetros en la url con $_POST de este modo:

header('Location: ../registro.php?nombre='.$_POST['registro_nombres']."&apellido=".$_POST['registro_apellidos']."&correoelectronico=".$_POST['registro_correoelectronico']."&password=".$_POST['registro_password']."&repetir_password=".$_POST['repetir_registro_password']."&genero=".$_POST['registro_lista_genero']."&mes=".$_POST['registro_lista_nacimiento_moth']."&dia=".$_POST['registro_lista_nacimiento_day']."&anio=".$_POST['registro_lista_nacimiento_year']."&pais=".$_POST['registro_lista_pais']."&ciudad=".$_POST['registro_lista_ciudad']."&profesion=".$_POST['registro_lista_profesion']."&direccion=".$_POST['registro_direccion']);

Para finalizar, los recibo en el archivo registro.php de este modo:

$nombre = $_GET['registro_nombres'];
$apellido = $_GET['registro_apellidos'];
$correoelectronico= $_GET['registro_correoelectronico'];
$password = $_GET['registro_password'];
$repetir_password = $_GET['repetir_registro_password'];
$genero = $_GET['registro_lista_genero'];
$mes = $_GET['registro_lista_nacimiento_month'];
$dia = $_GET['registro_lista_nacimiento_day'];
$anio = $_GET['registro_lista_nacimiento_year'];
$pais = $_GET['registro_lista_pais'];
$ciudad = $_GET['registro_lista_ciudad'];
$profesion=$_GET['registro_lista_profesion'];
$direccion= $_GET['registro_direccion'];

El problema que presento es el siguiente:
Notice: Undefined index: registro_nombres on line 20 haciendo referencia al codigo anterior resaltado de rojo... y así
con las demás líneas inferiores.

Hago 3 aclaraciones:
1.- En php.ini tengo global_register=off
2.- Yo inicio cada codigo php con <?php y no con <? solamente
3.- Usé la función isset (); con la cual ya no generó ningún error, pero esa asignación la uso para que el usuario no vuelva a ingresar toda la informacion al formulario nuevamente, y al usar isset(); no me presentó nada de lo que ingresó antes.

Gracias y disculpen si fueron muchas palabras, espero puedan ayudarme
  #2 (permalink)  
Antiguo 11/11/2010, 16:10
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 6 meses
Puntos: 45
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

por que esto no existe:

Código PHP:
$_GET["registro_nombre"]; 
existe esto:

Código PHP:
$_GET["nombre"]; 
supongo que pasa lo mismo con los otras variables que envias por $_GET
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #3 (permalink)  
Antiguo 11/11/2010, 16:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 14
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

Humm... Solo para aclarar tu respuesta, me dices que lo que debe recibir los GET (de los parámetros enviados en:

header('Location: ../registro.php?nombre='.$_POST['registro_nombres']

Es la parte de la izquierda (sombreado con verde)... y no la parte del $_POST ?
Podrías decirme si estoy en lo correcto respecto a tu respuesta?

Mil gracias
  #4 (permalink)  
Antiguo 11/11/2010, 16:29
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 6 meses
Puntos: 45
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

exacto!! ahi es como defines las variables..

si quisieras usar elmismo nombre entonces

Código PHP:
Ver original
  1. header('Location: ../registro.php?registro_nombres='.$_POST['registro_nombres']....
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #5 (permalink)  
Antiguo 11/11/2010, 16:32
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

Saludos

Es correcto ya que desde que indicas parametros como lo tienes a una direccion tus variables ya dejan de ser manipuladas con el nombre del $_POST sino ahora con el nombre del $_GET que en este caso seria nombre
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #6 (permalink)  
Antiguo 12/11/2010, 12:52
 
Fecha de Ingreso: noviembre-2010
Mensajes: 14
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

Hola nuevamente, el problema anterior fue resuelto, tomar en cuenta que el error me salía cuando ejecutaba desde la pagina de registro directamente es decir que en el explorador lo ejecutaba directo y no desde la pagina principal de mi sitio.
Ahora el inconveniente es que al hacer click en "registrarse" ubicado en la pagina principal de mi sitio, me muestra el mismo error.



Notice: Undefined index: registro_nombres on line 20 haciendo referencia al codigo anterior resaltado de rojo... y así con las demás líneas inferiores.


Espero puedan ayudarme amigos.
  #7 (permalink)  
Antiguo 12/11/2010, 12:54
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

Saludos

Por que no posteas la modificacion que realizaste al codigo!.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #8 (permalink)  
Antiguo 12/11/2010, 13:07
 
Fecha de Ingreso: noviembre-2010
Mensajes: 14
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

A ver...
Este es el codigo de la pagina principal que llama al archivo "registro.php:"

<form action="Scripts/iniciarsesion.php" method="post" name="sesion" id="iniciosesion" onsubmit="MM_validateForm('Usuario','','R','Passwo rd','','R');return document.MM_returnValue">
<p class="textsesion">USUARIO</p>
<?php
if ($_SESSION['identificado']=="no")
{
echo "Correo o Contrase&ntilde;a invalido";
$_SESSION['identificado']="";
}
?>
<input name="Usuario" type="text" id="Usuario" size="30" maxlength="30" align="left" value=""/>
<p class="textsesion">CONTRASEÑA</p>
<input name="Password" type="password" id="Password" size="30" maxlength="30" align="left" value=""/><br />
<input name="botonenviar" type="submit" value="Enviar" align="middle" /><br />
<a href="recuperarpassword.php" class="password">Olvidaste tu contraseña</a>
<a href="registro.php" class="password">Regístrate ahora</a>

</form>


Este es el codigo del archivo "registro.php:"

<?php
session_start();
require("cabecera.php");
?>
<?php
include("conexion/conexion.php");

?>

<?php
$valida = $_SESSION['valida'];
$nombre = $_GET['nombre'];
$apellido = $_GET['apellido'];
$correoelectronico= $_GET['correoelectronico'];
$password = $_GET['password'];
$repetir_password = $_GET['repetir_password'];
$genero = $_GET['genero'];
$mes = $_GET['mes'];
$dia = $_GET['dia'];
$anio = $_GET['anio'];
$pais = $_GET['pais'];
$ciudad = $_GET['ciudad'];
$profesion= $_GET['profesion'];
$direccion= $_GET['direccion'];
$telefono = $_GET['telefono'];
$celular = $_GET['celular'];
$usuario = $_GET['usuario'];
$pregunta_seguridad= $_GET['pregunta_seguridad'];
$respuesta= $_GET['respuesta'];
?>


Y este es el codigo del archivo "valida_registro.php:"

<?php
session_start();
$_SESSION['valida']="";
$lbverifica=true;
if (empty($_POST['registro_nombres']))
{ $mensaje="Debe ingresar su nombre";
$lbverifica = false;
}
elseif(empty($_POST['registro_apellidos']))
{ $mensaje="Debe ingresar sus apellidos";
$lbverifica = false;
}
elseif(empty($_POST['registro_correoelectronico']))
{ $mensaje="Debe ingresar su correo electrónico";
$lbverifica = false;
}
elseif(empty($_POST['registro_usuario']))
{ $mensaje="Debe ingresar su usuario";
$lbverifica = false;
}
elseif(empty($_POST['registro_password']))
{ $mensaje="Debe ingresar su password";
$lbverifica = false;
}
elseif(strlen(($_POST['registro_password']))<3)
{ $mensaje="La contrase&ntilde;a minimo debe ser 3 digitos";
$lbverifica = false;
}

elseif(empty($_POST['repetir_registro_password']))
{ $mensaje="Debe volver a ingresar el password";
$lbverifica = false;
}
elseif(empty($_POST['registro_direccion']))
{ $mensaje="Debe ingresar su dirección";
$lbverifica = false;
}
elseif(empty($_POST['registro_telefono']))
{ $mensaje="Debe ingresar un número de teléfono";
$lbverifica = false;
}
elseif(empty($_POST['registro_celular']))
{ $mensaje="Debe ingresar un número celular";
$lbverifica = false;
}
elseif(empty($_POST['registro_lista_profesion']))
{ $mensaje="Debe escoger su profesión";
$lbverifica = false;
}
elseif(empty($_POST['registro_lista_genero']))
{ $mensaje="Debe escoger su sexo";
$lbverifica = false;
}
elseif(empty($_POST['registro_lista_nacimiento_day']))
{ $mensaje="Debe escoger su dia de nacimiento";
$lbverifica = false;
}
elseif(empty($_POST['registro_lista_nacimiento_month']))
{ $mensaje="Debe escoger su mes de nacimiento";
$lbverifica = false;
}
elseif(empty($_POST['registro_lista_nacimiento_year']))
{ $mensaje="Debe escoger su año de nacimiento";
$lbverifica = false;
}
elseif (!checkdate($_POST['registro_lista_nacimiento_month'],$_POST['registro_lista_nacimiento_day'],$_POST['registro_lista_nacimiento_year']))
{ $mensaje="La fecha es invalida";
$lbverifica = false;
}
elseif(empty($_POST['registro_lista_pais']))
{ $mensaje="Debe escoger su país de procedencia";
$lbverifica = false;
}
elseif(empty($_POST['registro_lista_ciudad']))
{ $mensaje="Debe escoger la ciudad en la que habita";
$lbverifica = false;
}
elseif(empty($_POST['registro_pregunta_seguridad']))
{ $mensaje="Debe escoger la pregunta de seguridad para la protección de su cuenta";
$lbverifica = false;
}
elseif(empty($_POST['registro_respuesta_seguridad']))
{ $mensaje="Debe registrar su respuesta a la pregunta de seguridad";
$lbverifica = false;
}

if (!$lbverifica)
{ $_SESSION['valida'] = $mensaje;
header('Location: ../registro.php?nombre='.$_POST['registro_nombres']."&apellido=".$_POST['registro_apellidos']."&correoelectronico=".$_POST['registro_correoelectronico']."&password=".$_POST['registro_password']."&repetir_password=".$_POST['repetir_registro_password']."&genero=".$_POST['registro_lista_genero']."&mes=".$_POST['registro_lista_nacimiento_moth']."&dia=".$_POST['registro_lista_nacimiento_day']."&anio=".$_POST['registro_lista_nacimiento_year']."&pais=".$_POST['registro_lista_pais']."&ciudad=".$_POST['registro_lista_ciudad']."&profesion=".$_POST['registro_lista_profesion']."&direccion=".$_POST['registro_direccion']."&telefono=".$_POST['registro_telefono']."&celular=".$_POST['registro_celular']."&usuario=".$_POST['registro_usuario']."&pregunta_seguridad=".$_POST['registro_pregunta_seguridad']."&respuesta=".$_POST['registro_respuesta_seguridad']);
}
?>


No sé si tenga algo que ver el inicio de sesión porque aún no he corregido 100% esa parte (session_start())

Espero su ayuda.
  #9 (permalink)  
Antiguo 12/11/2010, 13:32
 
Fecha de Ingreso: noviembre-2010
Mensajes: 14
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

Amigos he investigado algo y dice lo siguiente:

Generalmente esos "errores" no fatales para la aplicación suceden porque se hace una llamada a una variable la cual no ha sido inicializada, osea no contiene ningún valor tratable. Una solución posible a eso es o modificar el php.ini o una forma más prectica de hacerlo es poner una sentencia en la página en cuestión que obligue a no mostrar esos avisos. Eso se hace con "error_reporting()"
Pansandole valores como "E_ALL" la aplicación mostrará todos los problemas que contenga la misma, y con un "E_PARSE" solo mostraré errores relacionados a la sintaxis PHP.

Espero me sirva... cualquier ayuda estaré presto.
  #10 (permalink)  
Antiguo 12/11/2010, 13:35
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 6 meses
Puntos: 45
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

si no te salen los errores si debes modificar el php.ini y reinicar tu servidor web..
asi se te hace mas facil saber que tienes mal...
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #11 (permalink)  
Antiguo 12/11/2010, 14:01
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Validación formulario de contacto usando Header+$_POST+$_GET

Pues, para ser sincero no he leído tu código pero de entrada te recomiendo no usar dos páginas para hacer lo que necesitas.

Mejor usa una sola en la que arriba procesas el formulario y abajo lo dibujas, si no lo quieres así por efectos de orden, puedes usar "include" para incluir la página que procesa datos dentro de la que los envía.

en el formulario deja vacío el atributo action.

<form action="" method="post">...</form>

De esta forma vas a tener el array POST disponible todo el tiempo (si haz hecho "submit" claro)

Poco a poco te darás cuenta que la forma en la que distribuyes tus archivos es más importante de lo que piensas, y bueno te recomiendo investigar sobre MVC (Model View Controller), para mí, la mejor arquitectura de directorios que existe.

Un saludo!

Etiquetas: contacto, formulario, validar
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 23:01.