Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 4 Noviembre 2019, 02:14 am



Título: [Pregunta]: ¿Una dirección de URL "GLOBAL"?
Publicado por: Leguim en 4 Noviembre 2019, 02:14 am
Buenas noches,
tengo la siguiente función...

Código
  1. function Eject($page)
  2. {
  3. if(is_string($page))
  4. {
  5. header('Location: aplication/'.($page));
  6. exit();
  7. }
  8. }
  9.  

Basicamente lo que hace esta función es expulsar a un usuario a otra pagina...

Digamos que...

Código
  1. $usuario_permitido = false;
  2. if($usuario_permitido == false)
  3. {
  4.      Eject('index');
  5. }
  6.  
  7. echo "Buenas noches!";
  8.  


Básicamente vamos a preguntar si el usuario tiene permitido ver esta pagina y en el caso de que sea falso lo va a eyectar a la pagina "index" por tanto no sólo no va a poder ver la pagina, si en el caso puede cambiar el comportamiento del href no va a poder ver el mensaje buenas noches ya que se uso "exit();"

La pregunta es, si yo uso Eject(); en una pagina dentro del directorio "aplication/" basta con dejar la función como esta...
pero si quiero ejecutar la función en el directorio "aplication/ajax/page.php" ya es un directorio diferente...

lo mismo si el directorio es "aplication/directorio_a/direcotorio_b/etc/page.php"

lo que estoy buscando es redireccionarlo de una forma más global sin necesidad de depender en que directorio este...

algo como...
Eject("www.aplication.com/aplication")


Título: Re: [Pregunta]: ¿Una dirección de URL "GLOBAL"?
Publicado por: engel lex en 4 Noviembre 2019, 02:21 am
rutas absolutas, no tienes que usar la url, el navegador lo sobreentiende

con

Código:
header('Location: /aplication/'.($page));

lo enviará a tu_pagina.com/aplication/pagina ya que el / inicial le indica que es basado en el url raiz


Título: Re: [Pregunta]: ¿Una dirección de URL "GLOBAL"?
Publicado por: Leguim en 4 Noviembre 2019, 04:21 am
Hola..

Intente nuevamente como me dijiste pero me sigue dando el mismo error, error que es la razón por la que pregunto esto.

El error me lo envía por consola...

estoy usando ajax

hago click en x boton -> realiza petición ajax -> el fichero ajax evalua como anteriormente había escrito si pasa x cosa "Eject('index')" el directorio sería aplication/ajax/fichero_ajax.php

Si yo uso window.location.href (javascript) todo funciona bien, pero lo quería hacer con header()
este es el error que me da:
básicamente no redirecciona y solo muestra este error.

(https://i.ibb.co/8Kg9fFv/Captura.png)

Aísle el código y estoy 100% seguro que es eso.


Título: Re: [Pregunta]: ¿Una dirección de URL "GLOBAL"?
Publicado por: engel lex en 4 Noviembre 2019, 04:54 am
no es eso a primera vista...
 
el error es que estas usando ajax de forma sincrona lo que se considera obsoleto, muestra tu script de js donde aplicas el ajax



Título: Re: [Pregunta]: ¿Una dirección de URL "GLOBAL"?
Publicado por: @XSStringManolo en 4 Noviembre 2019, 11:54 am
header('Location: /index.html');
header('Location: "https://www.google.com"');

Diría que la url lleva comillas, si no te va, prueba sin ellas.

Deberías dejar de usar javascript en general. Úsalo para quitarle carga al servidor o para meter/sacar/alterar contenido sin recargar la página. Te ahorrarás muchos problemas.
Por ejemplo si haces la redirección con javascript, voy a ajustes del navegador y lo desactivo. Así ya no me rediriges y veo el contenido. Una vez dentro de tu página lo vuelvo a activar y listo. Asique tu medida usando javascript no es fiable.

El error que te da es porque no usaste javascript asíncrono. Lo que significa que el cliente se va a quedar conjelado hasta que el servidor le conteste porque está esperando una respuesta sin la que no puede continuar la ejecucción. Por ejemplo un script. No es buena idea hacer esto a menos que el resto de elementos y scripts de la página trabajen sobre o con la respuesta del servidor.
 No sé si jquery te lo hace por defecto. Si es así y no necesitas esperar, setea async a true en el bloque que haces la petición. O haz un bloque/cuerpo de función nuevo para la petición si estás usando la petición en el espacio global. Diría que puede afectar por el hoisting a otras peticiones si no metes la petición en un bloque independiente. Prueba y lo sabes.

Mira la documentación de Mozilla XMLHttpRequest donde te explican como funciona.


Título: Re: [Pregunta]: ¿Una dirección de URL "GLOBAL"?
Publicado por: Leguim en 4 Noviembre 2019, 22:00 pm
no es eso a primera vista...
 
el error es que estas usando ajax de forma sincrona lo que se considera obsoleto, muestra tu script de js donde aplicas el ajax



Es este:

Código
  1. $.ajax({
  2. url: 'ajax/resend_mail_recovery.php',
  3. type: 'POST',
  4. dataType: 'html',
  5. data: {id_user, page},
  6.  
  7. success: function()
  8. {
  9. $(document).ready(function()
  10. {
  11. document.body.style.cursor = 'default';
  12. document.getElementById('modal_show_loading').style.display = 'none';
  13. });
  14. }
  15. })
  16.  
  17. .done(function(results)
  18. {
  19. $('body').append(results);
  20. })
  21.  

Si uso "window.location.href" funciona de 10 pero ya al usar header me da este problema, también estoy en la incognita de cual es mejor si redirigirlo con js o con php (lo que sea más seguro)

No hay problema si el usuario desabilita javascript, ya que el programa detecta si esta desactivado y lo redirecciona con una <meta> a otra pagina usando <noscript><meta etc etc></meta></noscript>