Foros del Web » Programando para Internet » PHP »

Control acceso a página

Estas en el tema de Control acceso a página en el foro de PHP en Foros del Web. Amigos necesito una idea para crear un control de acceso a una página. Me explico, tengo una página (pagina1.php) la cual contiene información editable por ...
  #1 (permalink)  
Antiguo 28/12/2009, 11:58
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Exclamación Control acceso a página

Amigos necesito una idea para crear un control de acceso a una página. Me explico, tengo una página (pagina1.php) la cual contiene información editable por los usuarios, la idea es que cuando un usuario "X" entre a la página está de alguna manera se bloquee y no permita entrar a otro usuario a esta página hasta que se halla salido de ella o cerrado bien se halla cerrado.

Me imagino que debe ser algo similar a cuando en las páginas de foros dice "usuario1,usuario2,usuario3,usuarioN mirando este tema", la manera de detectar a un usuario mirando la página.

Alguien que me ayude porfa....no estoy pidiendo que la hagan, solo que me den ideas de alguna función que ud. conoscan. Desde ya gracias.
  #2 (permalink)  
Antiguo 28/12/2009, 12:00
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

trabajas con registro de usuario o pretendes que cualquiera pueda entrar?
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 28/12/2009, 12:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

Necesitas hacer varias cosas,
1. Al menos 4 columnas en la base de datos una para indicar que esta bloqueada, otra para la fecha y hora, otra para indicar la página que esta visitando y otra para indicar cual es el usuario.
2. Necesitas crear en todas las demás páginas una función que actualice esa tabla de base de datos para que cuando el usuario pulse sobre otra pagina actualice la base de datos y se pueda ahora entrar en la pagina que el usuario bloqueo al visitarla.
3. Necesitas usar un cronjob para que cuando el usuario que visitó la página cierre el navegador, este cronjob mire si pasaron 15 minutos o el tiempo que quieras establecer para que automáticamente el servidor actualice la base de datos y así se pueda visitar la página.
4. Necesitas crear en la página que visitó el usuario un código que corra cada cierto tiempo para que actualice la base de datos que todavia el usuario está viendo la pagina.

Tal vez otras cosas más pero con eso puedes comenzar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 28/12/2009, 12:11
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

mmm te puedes ahorrar muchos de los pasos que dice abimaelrc (sin desmerecer obvio) con el evento de javascript onUnload.. asi te enteras cuando el usuario abandona la pagina, ya sea cambio de link cerro pestaña, navegador o lo que sea y puedes enviar vía post algún dato cuando esto pase asi actualizas la db y solo necesitarías el paso 1 del post anterior :P

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 28/12/2009, 12:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

Es verdad lo que indica Hidek1, el único problema sería ver que tengan javascript habilitado en el navegador que usará el usuario.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 28/12/2009, 12:35
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
De acuerdo Respuesta: Control acceso a página

Cita:
Iniciado por Hidek1 Ver Mensaje
trabajas con registro de usuario o pretendes que cualquiera pueda entrar?
Efectivamente solo usuarios registrados.

Cita:
Iniciado por Hidek1 Ver Mensaje
...javascript onUnload.. asi te enteras cuando el usuario abandona la pagina, ya sea cambio de link cerro pestaña, navegador o lo que sea ...
Esa es una de mis mayores preocupaciones, que pueda reconocer si sale de la página en caso de cualquier evento, ya sea cualquiera de los que me mencionaste.


Pensé que sería más complicado, pero al parecer no es tanto, lo haré y si resulta compartire el código con ud. por si alguien + del foro lo necesita


Gracias a ambos.
  #7 (permalink)  
Antiguo 28/12/2009, 12:58
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

Casi olvido un pequeño, pero gran detalle.

Se supone que el evento onUnload se ejecuta cuando cierro la ventana, por ejemplo

Código HTML:
Ver original
  1. <body onunload="mifuncionjs()">

el problema surge que desde js no se pueden llamar funciones php, entonces ¿como hago para ejecutar la función php que permite hacer las modificaciones en la BD?
  #8 (permalink)  
Antiguo 28/12/2009, 13:02
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

envia un dato via post?

yo lo haria con jquery ya q no uso javascript solo, por temas de costumbre..
Código Javascript:
Ver original
  1. miFunctionjs(){
  2.     $.post("archivo.php","usuarioAbandono=true&userid=50");
  3. }

y en ese archivo.php procesas con los datos del usuario
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 28/12/2009, 13:18
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

Cita:
Iniciado por Hidek1 Ver Mensaje
envia un dato via post?

yo lo haria con jquery ya q no uso javascript solo, por temas de costumbre..
Código Javascript:
Ver original
  1. miFunctionjs(){
  2.     $.post("archivo.php","usuarioAbandono=true&userid=50");
  3. }

y en ese archivo.php procesas con los datos del usuario
otra vez agradezco tu voluntad
  #10 (permalink)  
Antiguo 29/12/2009, 08:52
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

He intentado que al ejecutar onUnload llame a miFunctionjs, pero no me funciona.

No conosco mucho de jquery, pero si se que para que se ejecute código de jquery hay que poner:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     //Aqui el codigo de lo que quiero
  3. });

Esto hace que una vez cargado el documento se ejecute el código que indique, lo que no se es si existe algo similar, pero para cuando se descarga la página, es decir algo similar a esto:

Código Javascript:
Ver original
  1. $(document).onUnload(function(){
  2.     //Aqui el codigo
  3. });

lo he intentado y no funciona
  #11 (permalink)  
Antiguo 29/12/2009, 08:59
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

Código Javascript:
Ver original
  1. $(document).unload(function(){
  2.           //Aqui el codigo
  3.       });
__________________
More about me...
~ @rhyudek1
~ Github
  #12 (permalink)  
Antiguo 29/12/2009, 09:01
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

Cita:
Iniciado por javiercitox Ver Mensaje
He intentado que al ejecutar onUnload llame a miFunctionjs, pero no me funciona.

No conosco mucho de jquery, pero si se que para que se ejecute código de jquery hay que poner:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     //Aqui el codigo de lo que quiero
  3. });

Esto hace que una vez cargado el documento se ejecute el código que indique, lo que no se es si existe algo similar, pero para cuando se descarga la página, es decir algo similar a esto:

Código Javascript:
Ver original
  1. $(document).onUnload(function(){
  2.     //Aqui el codigo
  3. });

lo he intentado y no funciona
pffffffff.... que torpe que soy si funciona
Código Javascript:
Ver original
  1. $(document).onUnload(function(){

pero es:
Código Javascript:
Ver original
  1. $(document).unload(function(){

había olvidado incluir la librería jquery
  #13 (permalink)  
Antiguo 29/12/2009, 09:04
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

aajaja suele pasar..
suerte con eso

Saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #14 (permalink)  
Antiguo 29/12/2009, 09:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

Estaba haciendo unas pruebas con onUnload y tiene un fallo con google chrome y es que al salir no actualiza la base de datos, claro estoy usando ajax. Para ello use onbeforeunload y resolvió el fallo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 29/12/2009, 09:24
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

:O gracias por la información voy a tener que revisar uno de mis sistemas trabaja con eso.. aunque lo probe desde linux con chromium en su tiempo y funcionaba bien.. ahora que esta chrome para linux volvere a revisar..!

Saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #16 (permalink)  
Antiguo 29/12/2009, 12:00
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
De acuerdo Respuesta: Control acceso a página

Al fin logre hacerlo :) agregue una tabla a la BD que contiene solo dos campos la URL de la página y el Login del usuario que la tiene bloqueada. El codigo es el siguiente:

1ro el codigo de la página principal

Pagina1.php
Código PHP:
Ver original
  1. <?php
  2. include("miLibreria.php");
  3. Conexion();
  4.  
  5. $URL = "MS_IntervencionI2.php";
  6. $EstadoPagina = EstadoPagina($URL,$_SESSION[sesion_usuario]);
  7.  
  8. if ($EstadoPagina != NULL)
  9.     {
  10.     echo "<script>alert('".$EstadoPagina."');document.location.href='index.php';</script>";
  11.     return;
  12.     }
  13. ?>
  14. <html>
  15. <head>
  16. <title>Titulo de la pagina</title>
  17. </head>
  18. <body>
  19. <script language="javascript" src="js/jquery-1.3.min.js"></script>
  20.  
  21. <!-- En este script se hace toda la mágia ;) -->
  22. <script>
  23. $(window).unload(function(){
  24.     $.post ("LiberarAcceso.php", "url=<?php echo $URL;?>");});
  25. </script>
  26.  
  27. Todo el contenido de mi página.

miLibreria.php contiene funciones que utilizo en el sitio, entre las cuales está la de Conexion() [para conectar a MSSQL] y EstadoPagina() [para ver si la página está bloqueada]

Código PHP:
Ver original
  1. function EstadoPagina($pURL,$pLogin)
  2.      {
  3. //Consulto si a la tabla acceso_restringido si existe algún registro con la url que visito
  4.       $Estado = mssql_fetch_array(mssql_query ("SELECT LOGIN
  5.                       FROM ACCESO_RESTRINGIDO
  6.                       WHERE URL = '".$pURL."' "));
  7.  
  8. //Si no hay registro quiere decir que el acceso es libre, por lo que debo bloquearla insertando un registro en dicha tabla
  9.        if ($Estado == NULL)
  10.             {
  11.              mssql_query("INSERT INTO ACCESO_RESTRINGIDO (URL,LOGIN)
  12.     VALUES('".$pURL."','".$pLogin."')");
  13.              return;
  14.              }
  15.  
  16. //Si el usuario que la tiene bloqueada no soy yo busco sus datos y los muestro con un mensaje de error
  17.  
  18.        if ($Estado[0] != $pLogin)
  19.             {
  20.              $Usuario = mssql_fetch_array(mssql_query("SELECT NOMBRES,APELLIDOS               FROM USUARIO
  21.                                                                  WHERE LOGIN = '".$Estado[0]."'"));
  22.                            
  23.              $Mensaje = "Esta página está siendo utilizada por ".$Usuario[0]." ".$Usuario[1].", blablablabla.......";
  24.            
  25.              return $Mensaje;
  26.             }
  27.    
  28. //Sino quiere decir que yo tengo la página bloqueada       
  29.        else
  30.             return;
  31. }

Por último la página LiberarAcceso.php

Código PHP:
Ver original
  1. <?php
  2. mssql_query ("DELETE FROM ACCESO_RESTRINGIDO
  3.                        WHERE URL = '".$_POST["url"]."' ")
  4. ?>


Gracias por el apoyo
  #17 (permalink)  
Antiguo 29/12/2009, 12:02
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

para esto estamos xD, y gracias por compartir tu codigo ..
__________________
More about me...
~ @rhyudek1
~ Github
  #18 (permalink)  
Antiguo 05/01/2010, 11:51
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

testeando el código, me he topado que cuando carga la página no hay problema al tomar el sistema, pero si presiono F5, actualizo la página o vuelvo a cargarla el evento unload se ejecuta igual y me libera el sistema. No entiendo porque :(
  #19 (permalink)  
Antiguo 05/01/2010, 11:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

Para ello tienes que usar unload y luego load. Yo trate lo mismo y me salió.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #20 (permalink)  
Antiguo 05/01/2010, 12:06
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Control acceso a página

Cita:
Para ello tienes que usar unload y luego load. Yo trate lo mismo y me salió.
como es eso :B? yo simplemente prohibi el refresh con un alert() diciendo que acabaria la session xD!.. ya que era todo con ajax tonc no necesitaba cambiar pagina!

pero eso del load me llama la atención podrías explicarme plz :P
__________________
More about me...
~ @rhyudek1
~ Github
  #21 (permalink)  
Antiguo 05/01/2010, 12:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

Yo hice esto
Código Javascript:
Ver original
  1. window.onbeforeunload = onUnloadDB;
  2. window.onunload = onUnloadDB;
  3. window.onload = function(){
  4.     onloadDB(<?php echo $ID; ?>);
  5. }
Los primeros dos se encargan de cuando la persona se va, pero con el onload logre que si la persona le da a F5 se vea como que la persona continua en la pagina. El primero es para google chrome que tiene problemas con onunload el segundo es para los demas navegadores (aunque el primero algunos navegadores los reconocen tambien) y el último es para cuando cargue la pagina vuelva a demostrar que esta en la página nuevamente. onUnloadDB es una función de ajax.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #22 (permalink)  
Antiguo 05/01/2010, 13:01
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

ok, pero si copio la dirección de la página y la vuelvo a escribir en la misma pestaña sucede lo mismo, voy a ser la pega más fácil y simplemente desactivo la barra de direcciones, quien sabe como...
  #23 (permalink)  
Antiguo 05/01/2010, 13:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

Me perdí con lo que estas pidiendo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #24 (permalink)  
Antiguo 05/01/2010, 13:41
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

Cita:
Iniciado por abimaelrc Ver Mensaje
Me perdí con lo que estas pidiendo.
Ahora solo quiero desactivar la barra de direcciones, ojo que no es un pop-up
  #25 (permalink)  
Antiguo 05/01/2010, 13:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

De la forma que lo puedes lograr es como si fuera un pop-up
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #26 (permalink)  
Antiguo 05/01/2010, 13:43
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 1 mes
Puntos: 7
Respuesta: Control acceso a página

Cita:
Iniciado por javiercitox Ver Mensaje
Ahora solo quiero desactivar la barra de direcciones, ojo que no es un pop-up
aunque puedas hacerlo y el usuario preciona F11 igual la va haber o si hace propiedades en la pagina, sale la URL

yo creo que crea otro post y replantea lo que necesitas ;D!!!
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #27 (permalink)  
Antiguo 05/01/2010, 14:05
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página

me da = si ve la dirección de la página, solo quiero que el usuario no pueda escribir en ella
  #28 (permalink)  
Antiguo 05/01/2010, 14:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

Creo que de la única forma es usandolo como POP-UP
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #29 (permalink)  
Antiguo 05/01/2010, 14:12
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Control acceso a página


eso si q me pone en aprietos
  #30 (permalink)  
Antiguo 05/01/2010, 14:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Control acceso a página

creo que no entiendes, para lograr lo que estas pidiendo, se tiene que lograr como POP-UP. Si no lo haces de esa forma, siempre va a poder modificar la dirección.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 02:00.