Foros del Web » Creando para Internet » HTML »

Diferentes instancias de una página web.

Estas en el tema de Diferentes instancias de una página web. en el foro de HTML en Foros del Web. Buenas tardes, Antes que nada agradecer de antemano por la atención que siempre brindan. La consulta: ¿Existe alguna forma de saber si ya hay una ...
  #1 (permalink)  
Antiguo 13/06/2011, 11:28
 
Fecha de Ingreso: marzo-2011
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Diferentes instancias de una página web.

Buenas tardes,

Antes que nada agradecer de antemano por la atención que siempre brindan.

La consulta:

¿Existe alguna forma de saber si ya hay una instancia de nuestro sitio web corriendo en el mismo navegador? La cuestión surge por el hecho de que me gustaría poder controlar de manera más fiable el hecho de que no sea posible entrar a cualquier archivo del sitio con solo escribir la URL directamente...

La primera idea fue utilizar sesiones o cookies, algo como esto:

En la página principal:

Código PHP:
Ver original
  1. <?php
  2.      session_start();
  3.      $_SESSION['entrada_correcta'] = true;
  4. ?>

Y en la página a controlar:

Código PHP:
Ver original
  1. <?php
  2.      session_start();
  3.      if(isset($_SESSION['entrada_correcta'])){
  4.            // Muestro página.
  5.      }else{
  6.            // Informe y redirección automática.
  7.      }
  8. ?>

Esto funciona a la prefección pero se presenta otro problema: Si el usuario ya abrió nuestra página principal en el mismo navegador, la sesión se ha creado, la variable ha sido seteada y... el archivo se carga.

Otra idea en la que pensé fue la de combinar las sessiones con las cookies y alguna que otra variable de servidor pero bueno, antes de meterme ha ver algo por este lado quería conocer sus opiniones, de modo que entre todos podamos seguir avanzando.

P.D.: Si llego a encontrar la solución pienso postearla, pero mientras tanto... "se escuchan ofertas" . Muchas gracias otra vez, espero respuestas.
  #2 (permalink)  
Antiguo 13/06/2011, 13:09
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Diferentes instancias de una página web.

hay navegadores como FF que mantienen la misma cookie de la sesión mientras tengan el mismo PID, solo hasta que la ultima instancia del navegador cierre, y por lo tanto se elimine su PID conservará la cookie de la sesión
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 13/06/2011, 17:14
 
Fecha de Ingreso: marzo-2011
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Diferentes instancias de una página web.

Antes que nada, muchas gracias por la respuesta.

Creo que he entendido tu explicación, ahora... ¿en el resto de los navegadores que sucedería?

Actualmente estoy pensando en algún algoritmo que pueda aplicar... Espero más sugerencias y de nuevo agradezco el interés y la pronta respuesta.
  #4 (permalink)  
Antiguo 13/06/2011, 20:11
Avatar de MasterXNicoX  
Fecha de Ingreso: junio-2008
Ubicación: ../Arg/SanLuis.city
Mensajes: 943
Antigüedad: 15 años, 10 meses
Puntos: 28
Respuesta: Diferentes instancias de una página web.

Podrias crear el PID y eliminarlo despues de cierto tiempo...
__________________
Adivino del Foro y Admirador de Sabios
  #5 (permalink)  
Antiguo 13/06/2011, 20:34
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Diferentes instancias de una página web.

buenas,
si he comprendido bien el comentario de @maycol, cuando hace mencion de PID se refiere al process ID. es un identificador numerico que asigna el sistema operativo para los procesos activos. de modo que no hay forma que a traves del desarrollo web se pueda manejar esa informacion porque esta totalmente fuera de su ambiente y alcance.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 13/06/2011, 21:14
Avatar de MasterXNicoX  
Fecha de Ingreso: junio-2008
Ubicación: ../Arg/SanLuis.city
Mensajes: 943
Antigüedad: 15 años, 10 meses
Puntos: 28
Respuesta: Diferentes instancias de una página web.

Se me habian mezclado los temas Pensé que estaba hablando de las cookies, hay que leer bien, hay que leer bien u.u
__________________
Adivino del Foro y Admirador de Sabios
  #7 (permalink)  
Antiguo 14/06/2011, 07:26
 
Fecha de Ingreso: marzo-2011
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Diferentes instancias de una página web.

Buenas,

Gracias por todo lo que han aportado, les comento un par de "cositas" en que he estado pensando para ver que les parece...

El uso de las cookies sería excelente para un caso como el que estamos viendo pero se presenta otro pequeño problema: Si el navegador tiene desactivado el uso de las cookies... ¡adiós idea!

El tema de esta validación pasa por la idea de que los "usuarios mal-intencionados" no puedan hacer de las suyas, es claro que un usuario promedio buscará entrar a la página principal, y ni se le ocurrirá (a menos que se deba a un error) abrir la página principal y en otra pestaña abrir un archivo suelto... Pero para un usuario que entienda algo... no sería tan dificil pensar "Ahá, este está utilizando variable de sesión o cookies, vamos a verlo" y ahí empieza a probar un par de cosas y...

Bueno, sigo pensando en la cuestión, creo que vamos bien rumbeados.

Abrazo.
  #8 (permalink)  
Antiguo 14/06/2011, 08:37
 
Fecha de Ingreso: marzo-2011
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Diferentes instancias de una página web.

Bueno, se me ocurrió una idea...

A ver que les parece:

Mi página consta de 3 frames, (por lo que he buscado por doquier la forma de acceder al nombre del frame, al id de la pestaña, al título del frameset principal, etc. y nada) entonces se me ocurrió lo siguiente:

¿Que tal si voy haciendo que se incremente la variable de sesión? A medida que se agreguen páginas la variable se va incrementando y, por supuesto ¡la incrementación tiene un límite! Si el número incrementado (almacenado en sesión) está dentro de determinado rango la página fue cargada correctamente, si no lo fue ¡el número debería estar por fuera de ese rango!

Entonces, de esta manera podría tener un gran control sobre lo que está pasando en la web... incluso puedo ver de que en un mismo navegador no se abra dos veces lo mismo... (en el caso de que se utilicen múltiples navegadores no habría problema, pues el control sería el mismo para cada uno...).

Bueno, voy a ponerme a trabajar, cuando tenga algo pronto pienso postearlo, de todas formas sigo escuchando respuestas.

Gracias por todo lo aportado hasta ahora,

un abrazo.
  #9 (permalink)  
Antiguo 14/06/2011, 09:51
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Diferentes instancias de una página web.

creo que se te olvidan 2 detalles:

1 - las sesiones utilizan una cookie (generalmente a no ser que se propaguen por GET, eso implica siempre pasar el SID (session ID))

2- ¿que pasa si el usuario recarga la página: session++, no creo que funcione?

además las cookies tienen tiempo de expiración, y la mejor forma de prevenir ataques CSRF es usar tokens
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #10 (permalink)  
Antiguo 14/06/2011, 10:12
Avatar de solhdeck  
Fecha de Ingreso: junio-2011
Mensajes: 87
Antigüedad: 12 años, 10 meses
Puntos: 32
Respuesta: Diferentes instancias de una página web.

Yo creo que te estás complicando demasiado.

Si no quieres que abran un archivo directamente, tiene que haber un modo de que el php compruebe, independientemente de todo eso, la dirección desde la que se accede.

Además, si el usuario quiere trastear, no tiene que abrir otra pestaña. Se loguea, y desde la pestaña inicial puede cambiar la ruta igualmente, así que lo de ir contando me parece un poco tontería.

Si tu objetivo es que sólo puedan llegar a un archivo o una página mediante un enlace concreto, yo lo que haría sería que el enlace fuese un formulario con un input oculto y que el formulario enviase por POST.
Código HTML:
<form method='post' action='pagina.php'>
<input type='hidden' value='llego_bien' id='llega'>
<input type='submit' value='ir alli'>
</form> 
Luego, en la página a controlar, te aseguras de que exista el post

Código PHP:
if ($_POST['llega']=="llego_bien")
{
//  muestro la página
}
else
   echo 
"no hagas trampas"
Y así tienes un método bastante fiable o.o

Luego si quieres ser más avanzado todavía puedes meterle variables de sesión generadas aleatoriamente al formulario para que no puedan enviar los datos desde una web hecha a propósito para eso y bla bla bla... pero sigue siendo una chorrada.

Si el usuario tiene permiso para acceder al archivo mediante el enlace ¿Por qué no dejarle acceder mediante la url?
  #11 (permalink)  
Antiguo 14/06/2011, 13:05
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Diferentes instancias de una página web.

elnaza_14:

Primero creo que es necesaria alguna precisión,

Cita:
La cuestión surge por el hecho de que me gustaría poder controlar de manera más fiable el hecho de que no sea posible entrar a cualquier archivo del sitio con solo escribir la URL directamente...

Que alcance tiene eso, y para que?,

supongamos que tu pagina tiene un home llamado
inicio.php
y una página secundaria, llamada
contenido.php


vos desearias que quien tipee en su barra de direcciones

http://tusitio.com/contenido.php

no pueda acceder a ella?
podés, con php, con la variable
$_SERVER['HTTP_REFERER'], analizando la cadena y comparandola con el nombre de tu dominio, esto es asi porque al tipear un dirección directamente, esta variable NO existe.

Podés complementar con una verificación de las cookies habiliitadas

código de inicio.php

Código PHP:
Ver original
  1. <?php
  2. setcookie("verificar",'ok',time()+10800); //tres horas x sesion
  3. echo "<h1>inicio</h1>";
  4. echo "<a href='contenido.php'>contenido</a>";
  5. ?>


código de contenido.php

Código PHP:
Ver original
  1. <?php
  2. if(!isset($_COOKIE['verificar'])){
  3. echo "<p>asegurese que las cookies estan habilitadas en su navegador.<br>
  4. <a href='inicio.php'>ir al inicio</a></p>";
  5. exit();
  6. }
  7. $dominio = "foros.emprear.com"; //
  8. $dominio2 = "www.foros.emprear.com"; //
  9.  
  10. $referer = $_SERVER['HTTP_REFERER'];
  11. if ($referer == "") {
  12. $host = $dominio;
  13. } else {
  14. $host = parse_url($referer);
  15. }
  16.  
  17. if($host['host'] == $dominio || $host['host'] == $dominio2) {
  18. echo "muestro";
  19. } else {
  20. //redirijo
  21. header("Location: inicio.php");
  22. exit();
  23. }
  24. ?>
Pero cuidado, esa script es tan estricta que no podrian acceder a contenido.php desde links externos a tu dominio, para hacerla más permisiva, solo deberias condicionar contra la existencia de $referer y no contra su contenido


Demo

http://foros.emprear.com/php/cookies/inicio.php

http://foros.emprear.com/php/cookies/contenido.php
(tambien intentar acceder a esa segunta dirección ingresandola directamente en el navegador, o sencillamente pegando y accediendo)

Probar tambien deshabilitando cookies en el navegador

Acceder desde un sitio fuera del dominio

http://emprear.com.ar/foros.php

En cuanto al comportamiento de los diferentes navegadores, funciona correctamente en todos

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 15/08/2011, 18:58
 
Fecha de Ingreso: marzo-2011
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Diferentes instancias de una página web.

¡Muchas gracias a todos por las respuestas!

Al final terminé inclinándome pro el uso de los REFERER, me pareció lo mejor para esta ocasión, y lo más importante es que el código queda prolijo, limpio, y no hay que hacer demasiados cambios, permitiendo un buen control sobre lo que pasa en el sitio.

Gracias otra vez por su tiempo y su dedicación.

Un abrazo para todos.

Etiquetas: acceso-directo-web, contol-web, evitar-acceso-directo
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 22:20.