Foros del Web » Programando para Internet » PHP »

Sistema de Registracion

Estas en el tema de Sistema de Registracion en el foro de PHP en Foros del Web. hola amigos de php.......paso a hacerles una pregunta........estoy realizando un sistema de registracion que cuenta con 3 formularios o pasos para registrarse, en el primero ...
  #1 (permalink)  
Antiguo 14/04/2004, 17:16
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
Pregunta Sistema de Registracion

hola amigos de php.......paso a hacerles una pregunta........estoy realizando un sistema de registracion que cuenta con 3 formularios o pasos para registrarse, en el primero el usuario elige un nombre de usuario y coloca su mail.....el sistema verifica si, no estan esos datos registrados previamente, luego paso al segundo formulario donde llena los datos personales, y para terminar pasa al tercero donde llena un formulario de preferencias............mi pregunta es como hacer para que un solo scripts haga todas las verificaciones de los tres formularios........sera mediante de un switch¿¿¿???........ademas no se me ocurre porque los datos estan guardados en diferentes tablas, que estan normalizadas y solo las une un solo campo clave que es el "USERID" que es autoincrementable.........si alguien tiene alguna idea por pequeña que sea sera Bienvenida................Desde ya MUCHAS GRACIAS!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #2 (permalink)  
Antiguo 15/04/2004, 06:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno . si, puedes usar un sólo script de proceso.

Necesitarás una variable de control que indique que proceso ha de realizar tu script y que lo gestione un swith() .. así llamaras a tus 3 procesos intermedios de tus 3 formularios tipo:

formulario1.php
<form action="procesar.php?accion=paso1" method="post">

formulario2.php
<form action="procesar.php?accion=paso2" method="post">

formulario3.php
<form action="procesar.php?accion=paso3" method="post">

en procesar.php tomaras el valor de accion por el URL en modo GET para aplicar el switch() (podrías usar también campos hidden y así llevar esa variable "acción" en el método que uses en el formulario (en ese caso del ejemplo en POST).

Código PHP:
switch ($_GET['accion']){
case 
"paso1":

// procesos para el paso 1

break;
case 
"paso2":
// procesos para el paso 2
break;
case 
"paso3":
// procesos para el paso 3
break;
default:
   echo 
"secuencia incorrecta de proceso ...";

El tema del "USERID" .. si dices que es un campo incremental, lo generas en el proceso 1 (el registro que crea ese ID) ... Tendras que obtener dicho "USERID" con mysql_insert_id() para propagarlo a los subsiguientes formularios, los cuales deberan tomar esa variable y pasarla al script de proceso. Esto mismo puedes hacerlo (recomendable por seguridad) usando una sessión .. ejemplo:

Código PHP:
<?
session_start
();
switch (
$_GET['accion']){
case 
"paso1":

// procesos para el paso 1

// Obtienes el ID autoincremental generado por tu INSERT:
$userid=mysql_insert_id($consulta);
// Y lo llevas a una variable de sesión de nombre "USERID"
$_SESSION['USERID']=$userid;

// Y redireccionas a tu formulario2
header("location: formulario2.php");
exit;
break;

case 
"paso2":
// Tomas el valor de tu variable de sesión "USERID" para usarla en tus relaciones de tus tablas.

$userid=$_SESSION['USERID'];

// Y usas $userid donde lo requieras ...
// procesos para el paso 2

// Y redireccionas a tu formulario3
header("location: formulario3.php");
exit;

break;
case 
"paso3":
// lo mismo que el paso2 para tomar la variable de sesión USERID

// procesos para el paso 3

// En este punto ya no te hará falta esa variable de sesión .. así que puedes borrar dicha variable de sesión o incluso la sesión entera si no la necesitas con unset($_SESSION['USERID') para borrar la variable de sesión o bien session_destroy() para toda la sesión.

// Y redireccionas a tu otro sitio donde digas que el proceso se ha finalizado con exito .. 
header("location: nose.php");
exit;


break;
default:
   echo 
"secuencia incorrecta de proceso ...";
}
Un saludo,

PD: En el uso de sesiones empleado se asume que se propagará el SID por cookies y que se usa PHP 4.1.0 en adelante.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 15/04/2004 a las 06:18
  #3 (permalink)  
Antiguo 15/04/2004, 11:06
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
muchas gracias cluster era exactamente lo que mi mente no entendia como hacer......y esta muy bien explicado........ahora una ultima duda.

Cita:
PD: En el uso de sesiones empleado se asume que se propagará el SID por cookies y que se usa PHP 4.1.0 en adelante.
me gusta trabajar con las cookies desactivadas y la propagacion por url........porque generalmente no todos los usuarios la tienen habilitada......para hacer eso seria algo asi verdad?

Código PHP:
$userid=mysql_insert_id($consulta);
// Y lo llevas a una variable de sesión de nombre "USERID"
$_SESSION['USERID']=$userid;
$SID=session_name()."=".session_id();
header("Location: formulario2.php?$SID");
exit; 
desde ya muchas gracias
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #4 (permalink)  
Antiguo 15/04/2004, 11:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, así mismo puedes propagar el SID .. tambien podrías usar SID como constante que es

Código PHP:
$userid=mysql_insert_id($consulta);
// Y lo llevas a una variable de sesión de nombre "USERID"
$_SESSION['USERID']=$userid;
header("Location: formulario2.php?".SID);
exit; 
pero, .. te recomiendo que leas sobre la seguridad de propagar el SID por el URL .. Es más seguro hacerlo en cookies (lo dice PHP.net) pese que eso obligue a que tus clientes (navegadores) de tus usuarios dejen pasar esas cookies.

No sé que nivel de porcentaje de usuarios no aceptan cookies .. pero creo que el que realmente "controla" el tema .. lo hace con algún tipo de software y valida el mismo que cookie entra a sus PC's y cual no .. Si tu avisases que tu sistema va a usar cookies par seguridad .. tal vez no tendrias problemas. Y en su defecto, (más trabajo) pedir al usuario si desea usar cookies o no para trabajar con el sistema y ahí propagas el SID en el URL o lo haces en cookeis.

De todas formas .. uses o no propagación del SID en cookeis .. revisa la configuración de tu php.ini (o fuerzala con ini_set() ) para que no se propague el SID en cookies (session.use_cookies = 0) y que PHP sobreescriba casi todos los tag's HTML de redireccionamiento: links, formularios .. etc (session.use_tans_sid = 1) .. Y así sólo tendras que propagar el SID de forma manual donde PHP no lo hace pese que uses session.use_trans_sid = 1 que son por ejemplo en los redireccionamientos tipo header("Location ...") y los que uses javascript (window.open .. window.location .. etc) ademas de los refrescos vía <meta de refresh> .... (y no sé si me dejo alguno .. pero estate antento si en algún momento pierdes las variables de sesión será por qué se te olvidó propagar el SID o bien confiastes que PHP lo hacía en tal caso y no lo hace .. momento en el cual tendras que hacerlo a mano como en el ejemplo ...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 15/04/2004, 19:31
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
Gracias Cluster!!!! la verdad siempre muy claro.......como decimos en Argentina "SOS UN GROSO"...........y ya sabes estas invitado a comer en casa!!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
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:04.