[Pregunta]: ¿Una dirección de URL "GLOBAL"?

Iniciado por Leguim, 4 Noviembre 2019, 02:14 AM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Buenas noches,
tengo la siguiente función...

Código (php) [Seleccionar]

function Eject($page)
{
if(is_string($page))
{
header('Location: aplication/'.($page));
exit();
}
}


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

Digamos que...

Código (php) [Seleccionar]

$usuario_permitido = false;
if($usuario_permitido == false)
{
      Eject('index');
}

echo "Buenas noches!";



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")

engel lex

rutas absolutas, no tienes que usar la url, el navegador lo sobreentiende

con

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
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.

Leguim

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.



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

engel lex

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

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.

@XSStringManolo

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.

Leguim

#5
Cita de: 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



Es este:

Código (php) [Seleccionar]

$.ajax({
url: 'ajax/resend_mail_recovery.php',
type: 'POST',
dataType: 'html',
data: {id_user, page},

success: function()
{
$(document).ready(function()
{
document.body.style.cursor = 'default';
document.getElementById('modal_show_loading').style.display = 'none';
});
}
})

.done(function(results)
{
$('body').append(results);
})


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>