Foros del Web » Programando para Internet » PHP »

Ayuda con una sesion

Estas en el tema de Ayuda con una sesion en el foro de PHP en Foros del Web. Por favor necesito ayuda con una sesion para ingreso de usuario mediante login tengo los siguientes códigos Tengo el archivo login.php que viene de un ...
  #1 (permalink)  
Antiguo 15/01/2011, 11:01
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Ayuda con una sesion

Por favor necesito ayuda con una sesion para ingreso de usuario mediante login

tengo los siguientes códigos

Tengo el archivo login.php que viene de un archivo index.php que es el formulario donde ingreso el usuario y la contraseña

Código PHP:
Ver original
  1. <?
  2. //conecto con la base de datos
  3. require_once("conexion/conexion.php");
  4. //Sentencia SQL para buscar un usuario con esos datos
  5. $ssql = "SELECT * FROM login WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";
  6.  
  7. //Ejecuto la sentencia
  8. $rs = mysql_query($ssql,$con);
  9.  
  10. //vemos si el usuario y contraseña es váildo
  11. //si la ejecución de la sentencia SQL nos da algún resultado
  12. //es que si que existe esa conbinación usuario/contraseña
  13. if (mysql_num_rows($rs)!=0){
  14.     //usuario y contraseña válidos
  15.     //defino una sesion y guardo datos
  16.     session_start();
  17.     session_register("autentificado");
  18.     $autentificado = "SI";
  19. echo "<script type='text/javascript'>
  20.             alert('Datos correctos - RECUERDE: El buen funcionamiento del sistema depende ahora de usted');
  21.             window.location='insertareg.php';
  22.             </script>";
  23. //header ("Location: insertareg.php");
  24. }else {
  25.     //si no existe le mando otra vez a la portada
  26. echo "<script type='text/javascript'>
  27.             alert('Los datos ingresados no existen en la base de datos');
  28.             window.location='index.php';
  29.             </script>";
  30.      
  31. }
  32. ?>



Este es el archivo insertareg.php

Este puse al inicio del archivo para evitar el ingreso a este archivo si no se esta logeado y si no eres usuario registrado

Código PHP:
Ver original
  1. <?php
  2. //antes de hacer los cálculos, compruebo que el usuario está logueado
  3. //utilizamos el mismo script que antes
  4. if ($_SESSION["autentificado"] != "SI") {
  5. //si no está logueado lo envío a la página de autentificación
  6. header("Location: index.php");
  7. } else {
  8. //sino, calculamos el tiempo transcurrido
  9. $fechaGuardada = $_SESSION["ultimoAcceso"];
  10. $ahora = date("Y-n-j H:i:s");
  11. $tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));
  12.  
  13. //comparamos el tiempo transcurrido
  14. if($tiempo_transcurrido >= 60 * 10) {
  15. //si pasaron 10 minutos o más
  16. session_destroy(); // destruyo la sesión
  17. header("Location: index.php"); //envío al usuario a la pag. de autenticación
  18. //sino, actualizo la fecha de la sesión
  19. }else {
  20. $_SESSION["ultimoAcceso"] = $ahora;
  21. }
  22. }
  23. ?>

Tengo un problema y es que el archivo insertareg.php funciona correctamente cuando intento ingresar desde el navegador www.misitio/insertareg.php, me envia de una al formulario del login, pero cuando le doy los datos de ingreso del login, me rechaza y me envia nuevamente al formulario del login, lo que me indica que hay un problema con la sesion.

Alguien podría decirme donde tengo el problema? Necesito de su ayuda por favor
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #2 (permalink)  
Antiguo 15/01/2011, 11:04
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Ayuda con una sesion

session_register es una función obsoleta desde php 5.3, pero independientemente de eso ¿tu navegador tiene activas las cookies?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 15/01/2011, 11:47
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

Cita:
Iniciado por maycolalvarez Ver Mensaje
session_register es una función obsoleta desde php 5.3, pero independientemente de eso ¿tu navegador tiene activas las cookies?
Que funcion me recomiendas entonces mi amigo, te agradezco tu valiosa información
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #4 (permalink)  
Antiguo 15/01/2011, 11:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

En lugar de session_register('variable'); $variable = 'valor'; ahora debes asignar directamente el valor $_SESSION['variable'] = 'valor';
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 15/01/2011, 12:00
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

mm disculpa pero soy algo brutica con esto, no se cómo aplicarsela al codigo, podrias generarme el codigo completo como quedaría? Te lo agradecería mucho
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #6 (permalink)  
Antiguo 15/01/2011, 12:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

Disculpa si no puedo satisfacer tu deseo/necesidad, pero si lo hago, despues volveras con un problema similar... en cambio, si lo haces tu, ten por seguro que aprenderas un poco mas sobre sesiones y no tendras que recurrir a nosotros para este tipo de problemas.

Busca en tu codigo algo similar a lo que te comente, adapta las variables si es necesario y haz el reemplazo... tan dificil es?
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 15/01/2011, 13:16
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

Corrígeme si estoy mal, la implementé asi

Código PHP:
Ver original
  1. if (mysql_num_rows($rs)!=0){
  2.     //usuario y contraseña válidos
  3.     //defino una sesion y guardo datos
  4.     session_start();
  5.     $_SESSION['autentificado'] != 'SI';
  6.     //session_register("autentificado");
  7.     //$autentificado = "SI";
  8. echo "<script type='text/javascript'>

Pero tampoco me funcionó
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #8 (permalink)  
Antiguo 15/01/2011, 13:36
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

Bueno, no funciono porque estas asignando con != y debe ser solo con signo igual.

Por otra parte, session_start(); se recomienda que sea la primera linea de tu script, ya sea que el usuario este autentificado o no, de otra forma, el comportamiento de la sesion puede ser impredecible.
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 15/01/2011, 13:43
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

Disculpa la ignorancia eses lineas de codigo que me diste deben ser el el archivo login.php o en el insertareg.php?
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #10 (permalink)  
Antiguo 15/01/2011, 13:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

En login, que es donde inicias la sesion... de hecho, las colocaste justo donde tenian que ser, solo te falta corregir esto : $_SESSION['autentificado'] != 'SI'; dejando solo el signo igual = y cambiar session_start(); al principio del script, despues de <? que, por cierto, deberias usar siempre <?php porque en algunos servidores no funcionaran tus scripts.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 15/01/2011, 15:39
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

Gracias por la aclaracion de la sintaxis <?php pues la verdad acabo de comprender porque un proyecto que hice no me corrió en un servidor remoto y en local si, pensé que era problemas de versiones del php

Lo de lo otro tengo una duda. en el archivo insertarred.php que pongo entonces porque la verdad no me ha dado la solucion que me has dicho,
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #12 (permalink)  
Antiguo 15/01/2011, 17:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

insertared.php parece estar correcto, vuelve a mostrarnos aqui el codigo de login.php como lo tienes ahora, seguro ahi algo esta mal.
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 16/01/2011, 09:12
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

Cita:
Iniciado por Triby Ver Mensaje
insertared.php parece estar correcto, vuelve a mostrarnos aqui el codigo de login.php como lo tienes ahora, seguro ahi algo esta mal.
El login.php ha quedado asi.
Código PHP:
Ver original
  1. <?php
  2. //conecto con la base de datos
  3. require_once("conexion/conexion.php");
  4. //Sentencia SQL para buscar un usuario con esos datos
  5. $ssql = "SELECT * FROM login WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";
  6.  
  7. //Ejecuto la sentencia
  8. $rs = mysql_query($ssql,$con);
  9.  
  10. //vemos si el usuario y contraseña es váildo
  11. //si la ejecución de la sentencia SQL nos da algún resultado
  12. //es que si que existe esa conbinación usuario/contraseña
  13. if (mysql_num_rows($rs)!=0){
  14.     //usuario y contraseña válidos
  15.     //defino una sesion y guardo datos
  16.     //session_start();
  17.     $_SESSION['autentificado'] = 'SI';
  18.     //session_register("autentificado");
  19.     //$autentificado = "SI";
  20. echo "<script type='text/javascript'>
  21.             alert('Datos correctos - RECUERDE: El buen funcionamiento del sistema depende ahora de usted');
  22.             window.location='insertareg.php';
  23.             </script>";
  24. //header ("Location: insertareg.php");
  25. }else {
  26.     //si no existe le mando otra vez a la portada
  27. echo "<script type='text/javascript'>
  28.             alert('Los datos ingresados no existen en la base de datos');
  29.             window.location='index.php';
  30.             </script>";
  31.      
  32. }
  33. ?>

Agradezco toda la paciencia que mes tenido, de verdad me has aclarado muchas dudas. Espero encuentres el problema en este
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #14 (permalink)  
Antiguo 16/01/2011, 21:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

Creo que lo unico que te falta es crear $_SESSION['ultimoAcceso'] en login.php con la fecha de ingreso.
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 17/01/2011, 10:03
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

O sea, insertar esta linea de codigo en el login.php?
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #16 (permalink)  
Antiguo 17/01/2011, 11:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

Si, pero no asi nada mas... despues de asignar $_SESSION['autentificado'] debes asignar $_SESSION['ultimoAcceso']... pero con la fecha y el formato como lo necesitas...

$_SESSION['ultimoAcceso'] = date();

Entre los parentesis de date() pones el formato como lo tienes en insertareg.php en $ahora
__________________
- León, Guanajuato
- GV-Foto
  #17 (permalink)  
Antiguo 17/01/2011, 13:54
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

Si miras bien, eso lo tengo creado

$ahora = date("Y-n-j H:i:s");

Entonces no entiendo que hacer.
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #18 (permalink)  
Antiguo 17/01/2011, 21:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

Creo que tengo que tomar clases de español porque no soy capaz de darme a entender... sorry!
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 18/01/2011, 09:31
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Ayuda con una sesion

Ok, gracias mi amigo, disculpa pero el tema se me ha complicado
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #20 (permalink)  
Antiguo 18/01/2011, 12:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con una sesion

A ver... ultimo intento:

En login.php, despues de $_SESSION['autentificado'] = 'SI'; debes agregar:
$_SESSION['ultimoAcceso'] = date();

Pero con el formato que usas en el $ahora de insertareg.php.... si, yo se que ya tienes el $ahora = date("Y-n-j H:i:s");... ese dejalo como esta y agrega la variable de sesion en login.php

No hagas mucho caso de lo que sigue... es un monologo:
Lo que yo no entiendo es porque guardar la fecha con formato, en lugar de timestamp, si, de todos modos, para comparar conviertes a timestamp.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: Ninguno
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 03:27.