FAQ
Buenos dias Damas y Caballeros,
hoy les pido por favor su valiosa ayuda con un problemilla que me parece
sencillo de resolver, he buscado en otras partes y he encotrado muchas
soluciones que de principio no estan mal, pero desearía saber que
piensan ustedes:

El problema es que necesito hacer un session management que me permita
solamente tener una session por persona y por tab. Es decir, por Browser
y por tab solamente una vez. Si la persona que esta registrada en ese
momento entra en el sistema, quiero que cuando abra un tab en el browser
no le aparezca la página a la cual esta entrando.

Esto se debe a que uno de mis clientes desea instalar un portal ya
programado y que funciona perfectamente en un Citrix Terminal Server.
Los Clientes son thin clients que usan el terminal y por supuesto no
tienen sino el browser que le suministra el Citrix.

Espero puedan ayudarme.

Atte

Carlos Medina

Search Discussions

  • Lucas Crisman at Sep 16, 2010 at 12:22 pm
    Carlos:

    Nunca me toco desarrollar ninguna funcionalidad similar a lo que
    comentas, pero en este momento se me ocurre que podrías ir actualizarndo
    un valor aleatorio en una cookie mediante javascript cada determinada
    cantidad de segundos. Entonces, cada vez que se carga una página, -antes
    de comenzar a actualizar esta cookie- podrías verificar si la misma está
    cambiando su valor luego de determinado tiempo. Esto te daría la pista
    de que existe otro tab que esta haciendo ese trabajo sobre la cookie,
    indicandote que no es la única pestaña abierta.

    De todas formas la solucion que te estoy dando no entra dentro de PHP
    sino mas bien JavaScript.

    Espero haberte sido de ayuda.

    Saludos,
    On 16/09/2010 08:56, Carlos Medina wrote:
    Buenos dias Damas y Caballeros,
    hoy les pido por favor su valiosa ayuda con un problemilla que me
    parece sencillo de resolver, he buscado en otras partes y he encotrado
    muchas soluciones que de principio no estan mal, pero desearía saber
    que piensan ustedes:

    El problema es que necesito hacer un session management que me permita
    solamente tener una session por persona y por tab. Es decir, por
    Browser y por tab solamente una vez. Si la persona que esta registrada
    en ese momento entra en el sistema, quiero que cuando abra un tab en
    el browser no le aparezca la página a la cual esta entrando.

    Esto se debe a que uno de mis clientes desea instalar un portal ya
    programado y que funciona perfectamente en un Citrix Terminal Server.
    Los Clientes son thin clients que usan el terminal y por supuesto no
    tienen sino el browser que le suministra el Citrix.

    Espero puedan ayudarme.

    Atte

    Carlos Medina
  • J. Mauro Daino at Sep 16, 2010 at 12:40 pm
    Carlos, (cortito y al pie) agregas en la tabla de usuarios un "bandera", la
    "izas" cuando inicie sesión el usuario y la "arrias" cuando cierre sesión.
    Cuando recibís una petición de inicio de sesión validas el usuario la
    contraseña y que la "bandera" este "arriada". Saludos.

    --
    J. Mauro Daino (tcc: jMd/jMdZ)
    google.com/profiles/maurodaino
  • Lucas Crisman at Sep 16, 2010 at 2:13 pm
    Mauro:

    Tu método es correcto para asegurarse de que el usuario no inicie sesión
    desde dos puntos diferentes, pero creo que de no garantiza de ninguna
    manera que no vuelva a abrir una nueva pestaña con la sesión ya iniciada.

    Saludos,
    On 16/09/2010 09:39, J. Mauro Daino wrote:
    Carlos, (cortito y al pie) agregas en la tabla de usuarios un "bandera", la
    "izas" cuando inicie sesión el usuario y la "arrias" cuando cierre sesión.
    Cuando recibís una petición de inicio de sesión validas el usuario la
    contraseña y que la "bandera" este "arriada". Saludos.
  • Hahmael at Sep 16, 2010 at 3:50 pm
    Creo que esto no es posible, despues de todo los tabs son sobre un
    mismo navegador o instancia, de ahí que a veces se "machuquen" las
    sesiones, lo que trato de decir con SESSION de PHP no sera posible,
    deberás apoyarte en JS lo mas seguro.

    Saludo.

    El 16/09/2010 9:13, Lucas Crisman escribió:
    Mauro:

    Tu método es correcto para asegurarse de que el usuario no inicie
    sesión desde dos puntos diferentes, pero creo que de no garantiza de
    ninguna manera que no vuelva a abrir una nueva pestaña con la sesión
    ya iniciada.

    Saludos,
    On 16/09/2010 09:39, J. Mauro Daino wrote:
    Carlos, (cortito y al pie) agregas en la tabla de usuarios un
    "bandera", la
    "izas" cuando inicie sesión el usuario y la "arrias" cuando cierre
    sesión.
    Cuando recibís una petición de inicio de sesión validas el usuario la
    contraseña y que la "bandera" este "arriada". Saludos.
  • J. Mauro Daino at Sep 16, 2010 at 4:16 pm
    Lucas:
    Tenes toda la razón. Perdón por mi pobre lectura del problema.

    Carlos:
    Conozco poco de thin clients y no logro ubicar el producto de Citrix que
    usas, pero por el lado de PHP me parece que vas frito.
    Se me ocurre que podes hacer algo como desde la pagina 1 abrir con
    JavaScript la pagina 2 en una nueva ventana estableciendole como nombre de
    ventana una cadena aleatoria, en la pagina 2 poner el form de login y como
    un campo oculto insertar el nombre de la ventana y luego desde PHP devolver
    como cookie ese valor.
    De esa forma PHP tendría alguna forma de identificar cada objeto "window" de
    JavaScript (una pestaña es un objeto "window" en JavaScript).
    Fallas: (la obvia) JavaScript puede estar desabilitado, el usuario puede
    guardar como marcador la pagina 2 y despues entrar a ella directamente (por
    lo tanto la ventana no tendria nombre) y alguna otra seguro.
    Y un punto que no se: ¿donde se guardan las cookies? ¿en el thin client? ¿en
    el servidor Citrix?
    Suerte.

    --
    J. Mauro Daino (tcc: jMd/jMdZ)
    google.com/profiles/maurodaino
  • Carlos Medina at Sep 16, 2010 at 4:27 pm
    Hola a todos,
    muchísimas gracias por sus aportes. El problema lo hemos solucionado de
    la siguiente manera aunque no es la más elegante::

    1.- Mandar el SessionId a travez de la url.
    2.- Factory class para generar las session
    3.- Si el sessionId viene de la url se prueba si existe en la base de
    datos (el hash) y se cargan los datos en la clase (singleton)
    4.- si no hay session id en la url, se manda el request al LoginController
    5.- Si el sessionId en la url esta errado, se manda el request al
    LoginController

    Con esto que ya hemos probado podemos asegurar que la aplicacion
    funcione en el browser de manera distinta no importando la cantidad de
    tabs que se tenga.

    Carlos Medina


    Am 16.09.2010 18:15, schrieb J. Mauro Daino:
    Lucas:
    Tenes toda la razón. Perdón por mi pobre lectura del problema.

    Carlos:
    Conozco poco de thin clients y no logro ubicar el producto de Citrix que
    usas, pero por el lado de PHP me parece que vas frito.
    Se me ocurre que podes hacer algo como desde la pagina 1 abrir con
    JavaScript la pagina 2 en una nueva ventana estableciendole como nombre de
    ventana una cadena aleatoria, en la pagina 2 poner el form de login y como
    un campo oculto insertar el nombre de la ventana y luego desde PHP devolver
    como cookie ese valor.
    De esa forma PHP tendría alguna forma de identificar cada objeto "window" de
    JavaScript (una pestaña es un objeto "window" en JavaScript).
    Fallas: (la obvia) JavaScript puede estar desabilitado, el usuario puede
    guardar como marcador la pagina 2 y despues entrar a ella directamente (por
    lo tanto la ventana no tendria nombre) y alguna otra seguro.
    Y un punto que no se: ¿donde se guardan las cookies? ¿en el thin client? ¿en
    el servidor Citrix?
    Suerte.
  • J. Mauro Daino at Sep 16, 2010 at 4:33 pm
    Y si el usuario duplica la pestaña?

    2010/9/16 Carlos Medina <info@simply-networks.de>
    Hola a todos,
    muchísimas gracias por sus aportes. El problema lo hemos solucionado de la
    siguiente manera aunque no es la más elegante::

    1.- Mandar el SessionId a travez de la url.
    2.- Factory class para generar las session
    3.- Si el sessionId viene de la url se prueba si existe en la base de datos
    (el hash) y se cargan los datos en la clase (singleton)
    4.- si no hay session id en la url, se manda el request al LoginController
    5.- Si el sessionId en la url esta errado, se manda el request al
    LoginController

    Con esto que ya hemos probado podemos asegurar que la aplicacion funcione
    en el browser de manera distinta no importando la cantidad de tabs que se
    tenga.

    Carlos Medina


    Am 16.09.2010 18:15, schrieb J. Mauro Daino:
    Lucas:
    Tenes toda la razón. Perdón por mi pobre lectura del problema.

    Carlos:
    Conozco poco de thin clients y no logro ubicar el producto de Citrix que
    usas, pero por el lado de PHP me parece que vas frito.
    Se me ocurre que podes hacer algo como desde la pagina 1 abrir con
    JavaScript la pagina 2 en una nueva ventana estableciendole como nombre de
    ventana una cadena aleatoria, en la pagina 2 poner el form de login y como
    un campo oculto insertar el nombre de la ventana y luego desde PHP
    devolver
    como cookie ese valor.
    De esa forma PHP tendría alguna forma de identificar cada objeto "window"
    de
    JavaScript (una pestaña es un objeto "window" en JavaScript).
    Fallas: (la obvia) JavaScript puede estar desabilitado, el usuario puede
    guardar como marcador la pagina 2 y despues entrar a ella directamente
    (por
    lo tanto la ventana no tendria nombre) y alguna otra seguro.
    Y un punto que no se: ¿donde se guardan las cookies? ¿en el thin client?
    ¿en
    el servidor Citrix?
    Suerte.
    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php

    --
    J. Mauro Daino (tcc: jMd/jMdZ)
    google.com/profiles/maurodaino
  • Carlos Medina at Sep 16, 2010 at 5:02 pm

    Am 16.09.2010 18:33, schrieb J. Mauro Daino:
    Y si el usuario duplica la pestaña?

    2010/9/16 Carlos Medina<info@simply-networks.de>
    Hola a todos,
    muchísimas gracias por sus aportes. El problema lo hemos solucionado de la
    siguiente manera aunque no es la más elegante::

    1.- Mandar el SessionId a travez de la url.
    2.- Factory class para generar las session
    3.- Si el sessionId viene de la url se prueba si existe en la base de datos
    (el hash) y se cargan los datos en la clase (singleton)
    4.- si no hay session id en la url, se manda el request al LoginController
    5.- Si el sessionId en la url esta errado, se manda el request al
    LoginController

    Con esto que ya hemos probado podemos asegurar que la aplicacion funcione
    en el browser de manera distinta no importando la cantidad de tabs que se
    tenga.

    Carlos Medina


    Am 16.09.2010 18:15, schrieb J. Mauro Daino:
    Lucas:
    Tenes toda la razón. Perdón por mi pobre lectura del problema.

    Carlos:
    Conozco poco de thin clients y no logro ubicar el producto de Citrix que
    usas, pero por el lado de PHP me parece que vas frito.
    Se me ocurre que podes hacer algo como desde la pagina 1 abrir con
    JavaScript la pagina 2 en una nueva ventana estableciendole como nombre de
    ventana una cadena aleatoria, en la pagina 2 poner el form de login y como
    un campo oculto insertar el nombre de la ventana y luego desde PHP
    devolver
    como cookie ese valor.
    De esa forma PHP tendría alguna forma de identificar cada objeto "window"
    de
    JavaScript (una pestaña es un objeto "window" en JavaScript).
    Fallas: (la obvia) JavaScript puede estar desabilitado, el usuario puede
    guardar como marcador la pagina 2 y despues entrar a ella directamente
    (por
    lo tanto la ventana no tendria nombre) y alguna otra seguro.
    Y un punto que no se: ¿donde se guardan las cookies? ¿en el thin client?
    ¿en
    el servidor Citrix?
    Suerte.
    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php
    Okay lo que me falto decir es que, la solucion solo esta disenada para
    los usuarios de un entorno definido en el que se usa Citrix como
    terminal server. Los usuarios usan el terminal y se ha observado que
    muchas paginas en internet tienen el problema de que al usar cookies
    para grabar la session, los demas colegas pueden ver lo que el otro esta
    grabando/usando (por ejemplo en un web mailing System). En el momento
    que duplicas tu pestana usando el mismo id, pues entraras en el sistema.
    Pero nos hemos concentrado en la solucion primero del problema basico
    para luego resolver el resto.

    Al quien este interesado le aviso si quiere

    Saludos

    Carlos Medina

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedSep 16, '10 at 11:56a
activeSep 16, '10 at 5:02p
posts9
users4
websitephp.net

People

Translate

site design / logo © 2021 Grokbase