elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Hacer que enlace funcione solo cuando se viene de una pagina en especifico
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Hacer que enlace funcione solo cuando se viene de una pagina en especifico  (Leído 4,392 veces)
Alarkon_88

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« en: 17 Agosto 2018, 21:19 pm »

Hola, quería saber si es posible que solo se muestre el contenido de una pagina web siempre y cuando venga desde un enlace por ejemplo

mipagina.com/paso1.php   a  ►   mipagina.com/paso2.php

y de esta forma si la persona intenta entrar a mipagina.com/paso2.php directo con la URL no le sea permitido bien sea que no se vea nada o mostrando un mensaje de error


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #1 en: 17 Agosto 2018, 21:44 pm »

hay 2 formas

1- variable de sesión:
guarda siempre en la variable de sesión la url solicitada, así en paso2 puedes verificar si la ultima pagina fue paso1

ventaja: no se puede alterar
desventaja: si el usuario tiene 2 pestañas de tu pagina abierta (por ejemplo está viendo la pagina de "noticias") y entra a otro link despues de pagina1, el metodo fallaría, requerirías varias estructuras de control para evitar esto (nada del otro mundo, pero es más codigo)

2- referer header
leyendo la cabecera de referido, puedes saber desde que pagina se está referenciando a otra

ventaja: es facil seguir el rastro del usuario aunque tenga multiples pagina abiertas
desventaja: como es un método de lado de cliente puede ser alterado intencionalmente (no es fácil para un principiante, pero alguien con mediana capacidad podría hacerlo)


recomendación... ve por la opción 1, y asegurate de que no haya "confusiones" en el valor guardado... si no es esencial un control estricto a prueba de hackeos en este sistema (ya que por lo menos hay inputs que no podrían estar en blanco)  usa el metodo 2 ya que es más simple


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Alarkon_88

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #2 en: 18 Agosto 2018, 07:37 am »

Muchas gracias, logre conseguir este codigo el cual deberia funcionar de esta forma


Tengo paso1.php y paso2.php, el codigo lo coloco en la pagina paso2.php

muy bien el codigo detecta cuando ingreso directamente por url y me redigire a la pagina de error asignada el problema que tengo con este codigo es que funciona si entro desde cualquier pagina siempre y cuando sea por un enlace por decir paso5523.php contiene un enlace a paso2.php y igual sigue entrando cuando deberia mostrar el mensaje de error ya que la unica entrada solo deberia ser por paso1.php, quisiera que funcionara igual pero que solo mostrara la web y el mensaje de bienvenida solo cuando se venga de una pagina en especifico en este caso paso1.php


Código
  1.  
  2.  <?php
  3.  
  4. $ref = $_SERVER['HTTP_REFERER'];
  5. if(isset($ref[0])) {
  6.    $protocol = strtolower(parse_url($ref)['scheme']) === 'https' ? 'https':'http';
  7.    echo (strtolower($ref) === $protocol . 'paso1.php') ? 'welcome':'BIENVENIDO';  
  8. } else {
  9.    echo("<script>window.location = 'error.php';</script>");
  10. }
  11.  
  12.     ?>
  13.  
  14.  
« Última modificación: 18 Agosto 2018, 07:40 am por Alarkon_88 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #3 en: 18 Agosto 2018, 07:55 am »

por dios! XD pero por qué el desastre de codigo?

Código
  1. if(isset($_SERVER['HTTP_REFERER'])) {
  2.  $pagina = end(explode("/", $_SERVER['HTTP_REFERER'])); // separa por / y retorna el ultimo elemento
  3.  if($pagina == 'paso1.php'){
  4.    echo "viene de pagina1";
  5.  }else{
  6.    echo "error";
  7.  }
  8. }

igual revisa el codigo, no lo probé
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Alarkon_88

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #4 en: 18 Agosto 2018, 08:02 am »

jeje fue un codigo que consegui por ahi, ya probe el que me acabas de pasar y funciona bien solo hasta donde deberia mandar el error, por ejemplo si accedo directamente desde la URL me muestra la pagina normal cuando deberia salir error pero si entro desde paso1.php me muestra el mensaje de bienvenida
« Última modificación: 18 Agosto 2018, 08:06 am por Alarkon_88 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #5 en: 18 Agosto 2018, 08:24 am »

es raro, a ver tu codigo arreglado
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Alarkon_88

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #6 en: 18 Agosto 2018, 08:30 am »

No lo he podido arreglar, el problema es que cuando ingreso por url no me manda el error de resto funciona bien por ejemplo colocó el código  en paso2.php y ingreso por url y me muestra la pagina normal como hago para que en este caso mande error al igual que como si entrase desde otra página que no sea paso1.php gracias

Amigo por ejemplo si yo coloco que solo se permita entrada desde paso1.php como haria en el caso de que el enlace tenga variables ejemplo paso1.php?nombre=carlos&apellido=medina

como haria para que solo detectase el paso1.php y permitiera el acceso sin leer o omitiendo las variables

Hola he modificado un poco el codigo

su funcion es permitir solo entrada desde paso1.php, el problema es que si entro desde http://localhost/referer/paso1.php me da el mensaje de bienvenida pero si entro desde http://localhost/referer/paso1.php?nombre=carlos&apellido=medina me manda el mensaje de error "Solo se puede acceder por paso1.php"

Código
  1. <?php
  2.    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
  3.    if($referer !== 'http://localhost/referer/paso1.php'){
  4.            echo "Solo se puede acceder por paso1.php";
  5.            die();
  6.        }else{
  7.            echo "Entro desde paso1.php";
  8.        }
  9.    ?>



No hagas doble post, usa el boton modificar
« Última modificación: 18 Agosto 2018, 18:51 pm por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #7 en: 18 Agosto 2018, 18:54 pm »

solo ignora del ? en adelante... o usa post (no veo la necesidad del get)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Alarkon_88

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #8 en: 18 Agosto 2018, 18:59 pm »

Si, lo que pasa es que para la pagina donde lo estoy haciendo se envian variables por GET

pero el problema como te dije es que necesito que entre a paso2.php bien sea que entre desde paso1.php o paso1.php?nombre=carlos&apellido=medina

Si entro desde  paso1.php si entra normal y me da el mensaje de bienvenida
el problema esta en que si entro desde paso1.php?nombre=carlos&apellido=medina  me manda el mensaje de error indicandome que no he entrado desde paso1.php

de que manera deberai poner el codigo entonces en mi archivo paso2.php

no lo he logrado aun, si me pudieras ayudar con eso te lo agradecería por siempre.
Puede servir de esta manera?

Código
  1. <?php
  2.    $carpeta = str_replace($_SERVER['DOCUMENT_ROOT'], '', dirname($_SERVER['SCRIPT_FILENAME']));
  3.    $ruta = "https://$_SERVER[HTTP_HOST]$carpeta/paso1.php";
  4.    $aux = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
  5.    $referer = substr($aux, 0, strpos($aux, '?'));
  6.  
  7.    if($referer !== $ruta){
  8.            echo "Solo se puede acceder por paso1.php";
  9.            die();
  10.        }else{
  11.            echo "Entró desde paso1.php";
  12.        }
  13.    ?>
« Última modificación: 18 Agosto 2018, 19:09 pm por Alarkon_88 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Hacer que enlace funcione solo cuando se viene de una pagina en especifico
« Respuesta #9 en: 18 Agosto 2018, 19:20 pm »

por qué te matas haciendo locuras? XD has igual que yo y usa explode.... partes por "?" y tomas el primer segmento
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines