2009-12-04 21 views
5

Me gustaría hacer algo como play.clubpenguin.com.¿Limitar al cliente a visitar un sitio web con 1 pestaña y 1 navegador?

Lo que hace es que, cuando visite el sitio, tal vez usando Firefox o IE, si abrió una pestaña nueva o utiliza otro navegador, cuando visite ese sitio otra vez, mostrará algo así como: "Cierre la otro navegador que abrió esta página "o algo así.

¿Cómo hacer esto? (Solicitud de sus clientes)

Más información: El sitio es sitio Flash

EDIT:

Ok, creo que esto es una pregunta difícil, así, en general, ¿Se puede hacer utilizando php, mysql y JS?

+0

Desde la perspectiva de un usuario, me pregunto ¿POR QUÉ le gustaría restringir las capacidades de sus usuarios?
¿Por qué querrías quitarles su libertad? –

+0

Ok, esto es solo un ejemplo: al igual que Club Penguin, si permite el inicio de sesión en varios navegadores, puede ganar dinero de manera fraudulenta, digamos. Usted inicia sesión como usuario A y B. A y B van a la sala de juegos de varios jugadores, el usuario A no está parado para que el usuario B gane dinero. Bueno, esto es solo 1 de los ejemplos. Y, además, ESTA NO ES MI IDEA, "LA PETICIÓN DE SU CLIENTE", puse esa ORACIÓN en mi pregunta también. SI NO TIENE UNA RESPUESTA, NO RESPONDE EN EL CAMPO DE RESPUESTAS, RESPONDA EN COMENTARIOS. – webdever

+0

Disculpe las gorras. Estoy luchando y tratando de resolver este problema ahora. – webdever

Respuesta

0

algunas opciones vienen a la mente ...

  1. Cuando se abre por primera vez el sitio, que había necesidad de almacenar el estado actual del usuario en una cookie o similar, que se haría el ingreso por cada vez abres el sitio Si el estado es Activo, significa que tienen otra ventana abierta. El problema para garantizar que el estado se borre cuando salen de la ventana del sitio original - necesitaría escuchar el evento window.onunload y borrar el estado en ese momento, pero no puede garantizar al 100% que esto sucederá.
  2. De lo contrario, podría colocar una secuencia de comandos en el sitio que ejecute un script de servidor cada n segundos, notificando al servidor que hay una ventana abierta para ese cliente y evitar que se abran nuevas ventanas hasta que haya un lapso de conexión.
  3. Para ser más complejo, puede mantener una conexión persistente entre el servidor y el cliente (a través de sockets o similar), que mantendría la nota de lo mismo. Menos llamadas del cliente, un poco más complejo de configurar. Consulte http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm para obtener información básica sobre flash + sockets.
  4. Dado que está trabajando con Flash, podría buscar objetos locales compartidos (flash cookies) para almacenar el estado. Todavía es posible perder el evento de descarga, pero al menos la cookie se conserva en todas las sesiones del navegador y tipos de navegadores.

La opción 3 es la mejor en mi humilde opinión.

+0

1. Supongo que no funcionará en varios navegadores en la máquina cliente. –

+0

También pensé en usar cookies, pero también encontré algunos problemas si lo usaba. Tu tercera opción suena mejor, pero realmente no tengo idea de cómo comenzar, quiero decir implementarla. ¿Podría ser más específico en la 3ª opción? – webdever

+0

@Kumar: ¿Tienes alguna mejor solución? – webdever

0

Si desea prohibir el acceso con 2 inicios de sesión diferentes, puede aplicar una regla que bloquee un recurso determinado.

El IP del cliente podría ser uno de este recurso bloqueable: solo una sesión permitida para una dirección IP dada. Eso reduciría las trampas a las personas que tienen múltiples direcciones IP públicas. Las personas que comparten IP pública a través del proxy tendrían problemas.

No veo qué otro recurso bloqueable puede usar fácilmente.

+0

Sí, debería haber propuesto esta idea a mi cliente. Puesto que quieren modelar como lo hace clubpenguin, es decir, cuando ingresa a la página, ni siquiera la página de inicio de sesión, le indicarán el mensaje y le pedirán que cierre cualquier navegador/pestañas que lo abran. – webdever

+0

¿Qué hay de las personas detrás de los firewalls, donde todos aparecen bajo la misma dirección IP externa? – Marcus

+0

Oh, sí ... Casi me olvidé de esto.Las IP no son muy confiables. – webdever

7

Cada vez que sirve la página flash para el usuario, genera un token aleatorio. Incruste esta ficha en algún lugar de la página, por ejemplo, como flashVar. Además, almacene el token generado más recientemente en la sesión del usuario.

Siempre que el flash publique algo en el servidor, publique el token también. Si el token no coincide con el token almacenado en la sesión, rechace la publicación.

De esta manera, solo la versión generada más recientemente de la página tendrá la capacidad de comunicarse con el servidor y si el usuario abre múltiples versiones de la página, solo la más reciente funcionará.

Esta técnica debería funcionar incluso si el usuario abre navegadores adicionales en otras máquinas. No usa direcciones IP para establecer identidad. Y no hay ninguna posibilidad de que un usuario quede "bloqueado" de forma permanente porque cada vez que abre la página vuelve a restablecer el token almacenado.

Es una idea similar a la forma en que algunos marcos insertan un token de validación en formularios para prevenir ataques Cross-site Request Forgery.

-1

Solución:

de respuesta a sus clientes solicitan con un NO, porque eres el gurú de diseño web que sabe cuál es la mejor para los visitantes del cliente. el sitio web no tiene que apelar a su cliente sino a los visitantes del cliente. y cuando están tan limitados en sus propias computadoras, están completamente satisfechos.

+0

-1: "Esto no es útil" –

2

tratar con el siguiente código:

window.onload = function(){ 
    if (document.cookie.indexOf("_instance=true") === -1) { 
    document.cookie = "_instance=true"; 
    // Set the onunload function 
    window.onunload = function(){ 
     document.cookie ="_instance=true;expires=Thu, 01-Jan-1970 00:00:01 GMT"; 
    }; 
    // Load the application 
    } 
    else { 
    // Notify the user 
    } 
    }; 

El código restringirá el usuario para abrir una pestaña del navegador a la vez y durante la actualización del navegador (pestaña actual) el código no mostrará ninguna alerta. Copiar pegar la misma URL en una nueva pestaña no se le permitirá al usuario abrir. para obtener más información, intente this

Cuestiones relacionadas