Foros del Web » Programando para Internet » PHP »

Redirección si no ha pasado previamente por la página principal

Estas en el tema de Redirección si no ha pasado previamente por la página principal en el foro de PHP en Foros del Web. Buenas, Me gustaría saber cómo lo puedo hacer para rastrear si el usuario ha pasado previamente por la página principal (index.php), de lo contrario debería ...
  #1 (permalink)  
Antiguo 24/05/2010, 06:41
 
Fecha de Ingreso: mayo-2010
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Redirección si no ha pasado previamente por la página principal

Buenas,
Me gustaría saber cómo lo puedo hacer para rastrear si el usuario ha pasado previamente por la página principal (index.php), de lo contrario debería redireccionar ahí.
La idea es que no puedan ir directamente a otra página sin antes haber visitado la página principal.
He leído que se podría hacer con un GET en la URL tipo www.web.com/pagina2?validado=1
Pero no sé cómo se podría hacer tampoco.

Sino de manera cutre se podría hacer en el index.php una variable que al visitarla se le asigne un valor, por ejemplo $validado=1. Luego en la pagina2.php recuperar ese valor validado=$_GET['validado'] y luego un if validado!==1 que redireccione a index.php.
Pero no sé tampoco como pasar el valor de validado desde la página principal a las otras páginas.

Si saben cómo solucionarlo de algún modo espero su ayuda.
Muchas gracias.
  #2 (permalink)  
Antiguo 24/05/2010, 07:22
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Redirección si no ha pasado previamente por la página principal

q tal sToRaGe,

puedes crear una cookie en tu pagina principal, y en las demás verificar q exista esa cookie.

crear cookie:
Código PHP:
setcookie("nombre_cookie",1,time()+3600,"/",""); 
en las paginas
Código PHP:
if($_COOKIE["nombre_cookie"]!=1)
header("location: index.php"); 
Espero que te sirva.
Saludos.
  #3 (permalink)  
Antiguo 24/05/2010, 08:07
 
Fecha de Ingreso: mayo-2010
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Respuesta: Redirección si no ha pasado previamente por la página principal

Revisando otros posts entiendo que así haría expirar la sesión en 3600 segundos, es decir, 1 hora.
Con el "/" haces que la cookie se lea desde cualquier página del dominio.
1 es el valor que contendrá la cookie y luego verificas que ese valor sea 1 desde la página que entres, de modo que de no ser así redirecciona a index.php.
Es eso así?
Lo que no logro entender es que hacen las 2 comillas que has puesto al final del setcookie "".
También he leído que el setcookie tiene que ir antes del codigo html, debe ir en la primera linea de la página principal. Pero el código de las otras páginas también debe ir en la primera linea?
  #4 (permalink)  
Antiguo 24/05/2010, 08:22
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Redirección si no ha pasado previamente por la página principal

estas en lo correcto, la cookie dura 1 hora, tiene el valor de 1, "/" funciona en todas las paginas del dominio.

las 2 comillas es del parametro dominio, generalmente no lo uso, puedes quitarlas si quieres.

y los 2 códigos tienes que ponerlos antes del código HTML y también antes de cualquier impresión que hagas con php (echo, print, etc.).
  #5 (permalink)  
Antiguo 24/05/2010, 08:50
 
Fecha de Ingreso: mayo-2010
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Respuesta: Redirección si no ha pasado previamente por la página principal

Se me plantean 2 dudas:
1- Si en un navegador tiene 1 pestañas abiertas, en el caso que quite el +3600 y deje solo el time() si cierro la pestaña de mi web y la vuelvo a abrir redireccionará a la página principal o para que eso ocurra tendría que cerrar todas las pestañas del navegador?
2- Si el usuario no acepta cookies no redireccionará o redireccionará todo el rato al no encontrar la cookie?
No había tratado antes el tema de cookies.

Muchas gracias por la ayuda.
  #6 (permalink)  
Antiguo 24/05/2010, 09:00
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Redirección si no ha pasado previamente por la página principal

1.- si pones solo time(), no funcionaria ya que la hora de expiración seria la misma que la de creación, y expiraría.

2.- Si el usuario no tiene habilitadas las cookies seria un problema, ya que siempre lo enviaría al index por mas que este viniendo de ahí.

otra posible solución seria que verifiques la dirección de la que esta viniendo para que asi no entren directamente a una pagina sin pasar por el index

Código PHP:
if(!strstr($_SERVER['HTTP_REFERER'],"www.web.com"))
header("location: index.php"); 
  #7 (permalink)  
Antiguo 24/05/2010, 09:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Respuesta: Redirección si no ha pasado previamente por la página principal

Con esa condición redireccionaría si la dirección inmediatamente previa no está dentro del dominio o si no lo ha visitado nunca?
  #8 (permalink)  
Antiguo 24/05/2010, 09:30
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Redirección si no ha pasado previamente por la página principal

con eso redireccionaría al index, si la dirección inmediatamente previa no está dentro del dominio.
  #9 (permalink)  
Antiguo 24/05/2010, 10:26
 
Fecha de Ingreso: mayo-2010
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Muchas gracias.
2 pájaros de un tiro.
Duda resuelta.

Tengo un problema con el código que me distéis, sólo me redirecciona a la página principal cuando escribo una subpágina en la barra de direcciones. Es decir que si pongo www.mipagina.es/subpagina.php me redirecciona a www.mipagina.es
En cambio si busco en Google www.mipagina.es/subpagina.php no me redirecciona a la página principal, y teóricamente debería hacerlo... (?)

Acabo de ver que en Safari sí redirecciona, pero en Firefox no...

Última edición por GatorV; 08/07/2010 a las 10:18

Etiquetas: principal
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 14:48.