Foros del Web » Programando para Internet » PHP »

utilizar transacciones para recuperar contraseña

Estas en el tema de utilizar transacciones para recuperar contraseña en el foro de PHP en Foros del Web. Hola a todos. Hasta hace poco aprendi la teoría sobre el uso de transacciones y quisiera utilizarlo en un ejemplo practico de recuperación de contraseña ...
  #1 (permalink)  
Antiguo 15/08/2011, 09:35
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
utilizar transacciones para recuperar contraseña

Hola a todos. Hasta hace poco aprendi la teoría sobre el uso de transacciones y quisiera utilizarlo en un ejemplo practico de recuperación de contraseña para asegurarme que se hacen todos los pasos necesarios para que el usuario recupere su clave o en caso negativo no se ejecute ningún paso.

Teoricamente los pasos a seguir serian los siguientes:

•En la sección de login colocar la opción de recuperar la contraseña
•Pedir su correo electrónico.
•Crear un código aleatorio y cifrado y guardarlo en la base de datos.
•Enviar un correo a la direccion con un enlace dentro de tipo:
http://www.mipagina.com/recuperar_co...odigo=ELCODIGO

Ya en la pagina tomar los GET que han llegado, conectarse a la base de datos, verificar que los datos existen y en caso positivo pedirle nuevamente que coloque su contraseña y la actualice y se use commit, si algo falla o la conexión no funciona o se cae que deshaga los pasos con rollback.

Mi pregunta es y es lo que aun no tengo claro porque en este tema de transacciones soy nuevo. ¿Que criterio o criterios debo tomar en cuenta para definir si los pasos se hicieron bien y colocar commit o rollback? Gracias de antemano por la colaboración y aunque supongo que la respuesta debe ser algo facil mi idea no es simplemente hacer el sistema sino que la transacción cumpla con requisitos de seguridad minimos.

p.s. Lei en una pagina que para usar transacciones se debe utilizar una tabla tipo InnoDB, ¿Existe algun criterio para hacer esto o se puede utilizar cualquier otra tabla? Yo por defecto uso la tabla por defecto MyISAM así que no se que diferencias tendra
  #2 (permalink)  
Antiguo 15/08/2011, 09:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: utilizar transacciones para recuperar contraseña

Las transacciones son por ejecución, es decir no puedes mostrar varias paginas y esperar que la transacción sea la misma inicialmente ya que la ejecución de PHP es por pagina.

Saludos.
  #3 (permalink)  
Antiguo 15/08/2011, 09:55
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: utilizar transacciones para recuperar contraseña

¿Eso quiere decir que todos los pasos que comento debo validarlos en la misma pagina para hacer la transacción? Mi idea era hacer la transacción solamente a partir de la pagina de recuperar_contrasena.php. Si me tocara hacer todos los pasos que comente en la misma pagina no me quedaria muy claro como hacerlo.

Gracias por el aporte y sigo esperando mas respuestas y guias para utilizar de manera practica el uso de las transacciones.
  #4 (permalink)  
Antiguo 15/08/2011, 10:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: utilizar transacciones para recuperar contraseña

No, como te digo debes de ver las transacciones como parte de una unica conexión de Bases de Datos, no como parte de tus paginas de PHP, ya que así no son como funcionan.

Como PHP es un lenguaje Stateless no puedes persistir la conexión de la base de datos, entre tus ejecuciones de PHP, por lo que cada que ves tu pagina web ya terminada, el interprete de PHP ya cerro todas sus conexiones.

Las transacciones las debes de usar al estar ya ejecutando en la base de datos, y para algo tan simple como el cambio de contraseña no creo que veas realmente su poder ya que estas usando solamente una tabla.

Saludos.

Etiquetas: mysql
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 11:01.