Foros del Web » Programando para Internet » PHP »

Manejo de sesiones

Estas en el tema de Manejo de sesiones en el foro de PHP en Foros del Web. Holas.. aqui estoy de vuelta con otro problema... espero me puedan ayudarme resulta que estoy manejando sesiones, asi que lex explico mi situacion. tengo una ...
  #1 (permalink)  
Antiguo 26/07/2007, 16:27
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 4 meses
Puntos: 0
Pregunta Manejo de sesiones

Holas.. aqui estoy de vuelta con otro problema... espero me puedan ayudarme

resulta que estoy manejando sesiones, asi que lex explico mi situacion.

tengo una pagina A, donde el usuario se logea
una pagina B, donde esta un menu al que solo pueden entrar los usuarios logeados
y dentro de ese menu, segun la opcion elegida y un tipo (de usuario) restringo el acceso.

cual es el problema?

pues, que inicio sesion, entro al menu, eligo una opcion a la cual no tengo permiso, el sistema me rebota PERO creo que la sesion "se pierde", ya que deberia regresar al menu (pagina B) peor no lo hace... sino que me regresa a la pagina A para logearme otra vez...

abajo les muestro algo de codigo para que tengan una idea de lo que hago...

PAGINA B, menu:

Código PHP:
<?
    $here
=$_GET['here'];
    if (
$here==1
    {
            
session_start();
        
$_SESSION['user_cms'] = $tipo_perfil;
    } 
///fin del     if ($here==1) 

            
if (!(isset($_SESSION['user_cms'])))
    {
        
?>
            <script>
                alert("Debe iniciar sesion!");
                window.name="act";
                open(pag_inicio_sesion,'act');            
            </script>
        <?
    
}
    else
    {    
               
//donde dibujo el menu
         
}
here, lo utilizo a modo de bandera, que tomara el valor de uno si pase por la pagina del Logeo (evitar cuando entre por la url). y donde tbn buscare en la bd el usuario y su tipo (obvie ese fragmento de codigo)

Pregunto: cuando desde una pagina C, a la cual no tuve acceso me rebota a esta pagina (B) pues no entrará en el condicional del here.. pero la sesion aun deberia estar vigente no? por lo que deberia dibujar el menu, cosa que no hace. tan solo me muestra el mensaje de que debo inicar sesion y me manda a la pagina A.


PAGINA C, de donde soy rebotada:

Código PHP:
<?
    
if (!(isset($_SESSION['user_cms'])))
    {
        
?>
            <script>
                alert("Debe iniciar sesion!");
                window.name="act";
                open(inicio_sesion,'act');            
            </script>
        <?
    
}

    else
    {                
               
//consulto en la bd, para saber si por su tipo puede entrar a esta pagina
               //si puede entrar, bien. pero si no entonces mostrara el siguiente ensaje

              
if ($flag==0)
        {
        
?>
            <script>
                alert("Usted no tiene permisos suficientes para ingresar a este módulo");
                window.name="act";
                open(index_usuario,'act');            
            </script>
        <?        
        
}
Esperando su pronta respuesta y que entiendan el problema.

Gracias de antemano.

Última edición por arwen_1; 26/07/2007 a las 16:30 Razón: unos signos para que se enntienda mejor el codigo php
  #2 (permalink)  
Antiguo 26/07/2007, 16:49
Avatar de eskorbutin  
Fecha de Ingreso: junio-2006
Mensajes: 65
Antigüedad: 17 años, 9 meses
Puntos: 2
Re: Manejo de sesiones

Okas, entendido...

Se supone que de la página C te debe rebotar a la B aun mostrando el menú ok?

tienes un pequeño fallo en esto:

Código PHP:
$here=$_GET['here'];
    if (
$here==1
    {
            
session_start();
        
$_SESSION['user_cms'] = $tipo_perfil;
    } 
///fin del     if ($here==1) 
tu dices que aun debería existir la variable de sesión user_cms por que ya la habias establecido.. ok, el problema esta que para usar las variables de sesión tienes primero que iniciarlas con la función session_start(), la cual la tienes dentro del here.. y cuando eres rebotara ya no pasa por ahi entonces deberías poner la función session_start() fuera del if así...


Código PHP:
<?

    session_start
();
    
$here=$_GET['here'];
    if (
$here==1
    {
        
$_SESSION['user_cms'] = $tipo_perfil;
    } 
///fin del     if ($here==1) 

            
if (!(isset($_SESSION['user_cms'])))
    {
        
?>
            <script>
                alert("Debe iniciar sesion!");
                window.name="act";
                open(pag_inicio_sesion,'act');            
            </script>
        <?
    
}
    else
    {    
               
//donde dibujo el menu
         
}
  #3 (permalink)  
Antiguo 26/07/2007, 16:58
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 4 meses
Puntos: 0
De acuerdo Re: Manejo de sesiones

tenias absolutamente toda la razon!

gracias por el dato ;)


otra pregunta...

si un usuario A inicia sesion y viene otro usuario B, e inicia sesion tambien... lo toma como un solo usuario.. o serian dos diferentes..??

pq como tengo.

Código PHP:
<?
        $_SESSION
['user_cms'] = $tipo_perfil;

?>
me da la impresion que los tomará como el mismo, ya que ambos se inicarian con el nombre: user_cms..



edito:

lo probe pero desde dos exploradores diferentes... y si funciona... lo toma como dos usuarios. :)

Última edición por arwen_1; 26/07/2007 a las 17:02 Razón: agregar observacion
  #4 (permalink)  
Antiguo 26/07/2007, 17:34
Avatar de eskorbutin  
Fecha de Ingreso: junio-2006
Mensajes: 65
Antigüedad: 17 años, 9 meses
Puntos: 2
Re: Manejo de sesiones

Efectivamente, cada usuario toma una sesión diferente, por tando los valores de las variables de sesión son distintas por cada usuario
  #5 (permalink)  
Antiguo 22/08/2007, 15:32
 
Fecha de Ingreso: noviembre-2004
Mensajes: 53
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Manejo de sesiones

cierto el servidor reconoceria 2 sesiones distintas, ahora les planteo un problema que pasa si es que yo en el mismo servidor tengo 2 aplicaciones, que utilizan el mismo metodo de logeo
Ej.:
http://servidor/app1
http://servidor/app2

Supongamos que el usuario se logue a la app1 y trabaja sin problemas, y luego decide trabajar en la app2 y cambia la URL sin terminar la sesion de la app1.
Que problemas podriamos tener?
  #6 (permalink)  
Antiguo 22/08/2007, 15:40
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años
Puntos: 5
Re: Manejo de sesiones

yo aconsejo esto :

Cuando un usuario se loggea, guardo alguna informacion importante en la variable session, id, nombre de usuario, md5(pass), y otras cosas que debo necesitar de vez en cuando.

Ahora, crea una funcion llamada por ejemplo

comprobarloggeo(){
$sql = " SELECT `id` FROM `user` WHERE `nombre` =".$_SESSION["nombre"] AND `hash` LIKE ".$md5_de_pass".LIMIT 0 , 1 ;
$req = (mysql_query($sql);
if ($req){
//aqui compruebo que me da el ok.
// y si no que me mande directamente a la pagina de : tu sesion se cerro, loggeate
}
}

De esta forma si el usuario tiene los mismos datos en las dos aplicaciones, podria hacerlo perfectamente, pero si los tiene diferentes, le tira.

utiliza comprobarloggeo() en cada script privado, justo despues de conectar a la base de datos.

Última edición por ikarush; 22/08/2007 a las 15:47
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 20:05.