pagina - ocultar ruta url php
Encabezado PHP(UbicaciĆ³n:...): fuerza el cambio de URL en la barra de direcciones (14)
Actualmente estoy trabajando en un sitio móvil con autenticación usando sesiones de PHP con una base de datos. Tengo una página de inicio de sesión con un formulario que va a server_login.php en submit. El archivo php luego crea algunos datos de sesión (almacenar en $ _SESSION) y redirige al usuario a la página de índice:
header("location:../../index.php");
La nueva página web (index.php) se carga correctamente; sin embargo, cuando el encabezado redirecciona la página, la URL en la barra de direcciones no se modifica; permanece en * http: //localhost/php/server/server_login.php* en lugar de http: //localhost/index.php y, por lo tanto, no se pueden cargar todos mis otros recursos que hacen uso de rutas relativas. Es como si la página web todavía creyera que reside en / php / server en lugar de /.
Extrañamente, mi otro uso de encabezado ("ubicación: ...") en logout.php funciona y redirige la página con éxito con un cambio de URL.
Me he asegurado de que no haya salidas en mi * server_login.php * antes de la redirección del encabezado (más arriba solo son llamadas a mysql para verificar) y he usado ob_start () y ob_end_flush () también.
¿Existen métodos para forzar el cambio de la URL en la barra de direcciones (y, con suerte, corregir el problema de la ruta relativa)? ¿O estoy haciendo algo mal?
P / S: estoy usando jQuery Mobile.
EDITAR: Aquí está mi código para la redirección que no cambia la URL:
// some other stuff not shown
$sql = "SELECT * FROM $user_table WHERE email = ''$myemail'' AND password = ''$mypassword''";
$login_result = mysql_query($sql, $connection);
$count = mysql_num_rows($login_result);
if ($count == 1) {
// Successfully verified login information
session_start();
if (!isset($_SESSION[''is_logged_in''])) {
$_SESSION[''is_logged_in''] = 1;
}
if (!isset($_SESSION[''email''])) {
$_SESSION[''email''] = $myemail;
}
if (!isset($_SESSION[''password''])) {
$_SESSION[''password''] = $mypassword;
}
// Register user''s name and ID
if ((!isset($_SESSION[''name''])) && (!isset($_SESSION[''user_id'']))) {
$row = mysql_fetch_assoc($login_result);
$_SESSION[''name''] = $row[''name''];
$_SESSION[''user_id''] = $row[''user_id''];
}
header("Location: http://localhost:8080/meet2eat/index.php");
} else {
// Not logged in. Redirect back to login page
header("Location: http://localhost:8080/meet2eat/php/login.php?err=1");
}
¿Estás seguro de que la página que redirigirás también no tiene una redirección dentro de eso si no se encuentran datos de la sesión? Ese podría ser tu problema
También sí siempre agregue espacios en blanco como @Peter O sugirió.
// Registrar el nombre y la identificación del usuario
if ((!isset($_SESSION[''name''])) && (!isset($_SESSION[''user_id'']))) {
$row = mysql_fetch_assoc($login_result);
$_SESSION[''name''] = $row[''name''];
$_SESSION[''user_id''] = $row[''user_id''];
}
header("Location: http://localhost:8080/meet2eat/index.php");
cambiar a
// Registrar el nombre y la identificación del usuario
if ((!isset($_SESSION[''name''])) && (!isset($_SESSION[''user_id'']))) {
$row = mysql_fetch_assoc($login_result);
$_SESSION[''name''] = $row[''name''];
$_SESSION[''user_id''] = $row[''user_id''];
header("Location: http://localhost:8080/meet2eat/index.php");
}
Bueno, si el servidor envía un encabezado de redirección correcto, el navegador redirige y, por lo tanto, "cambia la URL". Podría ser un problema del navegador, entonces. No sé si tiene algo que ver con eso, pero no debe enviar una url relativa en el encabezado de ubicación ("HTTP / 1.1 requiere un URI absoluto como argumento para" Ubicación: incluido el esquema, nombre de host y ruta absoluta, pero algunos clientes aceptan URI relativos ", http://php.net/manual/en/function.header.php ) y" ubicación "deben estar en mayúscula, como:
header(''Location: http://myhost.com/mypage.php'');
Como "cfphpflex" sugirió que puede agregar un break;
después de configurar el encabezado. También puede hacer eco de algo, como echo ''test'';
.
En su elemento de formulario, agregue data-ajax="false"
. Tuve el mismo problema al usar jquery mobile.
Intenta cambiar:
header("Location : blabla")
^
|
(whitespace)
A
header("Location: blabla")
No use ningún espacio en blanco. Tuve el mismo problema. Luego eliminé el espacio en blanco como:
header(location:index.php);
Entonces funcionó.
Se supone que debes usarlo como header(Location:../index.php)
si está en otra carpeta
Solo cambia el hogar a tu gusto
$home_url = ''http://'' . $_SERVER[''HTTP_HOST''] . dirname($_SERVER[''PHP_SELF'']) . ''/home'';
header(''Location: '' . $home_url);
Tengo una solución para ti, ¿por qué prefieres usar Explotar si tu URL es algo así como
Url-> website.com/test/blog.php
$StringExplo=explode("/",$_SERVER[''REQUEST_URI'']);
$HeadTo=$StringExplo[0]."/Index.php";
Header("Location: ".$HeadTo);
Tuve el mismo problema al publicar un formulario. Lo que hice fue apagar los datos: ajax.
es posible que desee poner un descanso; después de su ubicación:
header("HTTP/1.1 301 Moved Permanently");
header(''Location: ''. $YourArrayName["YourURL"] );
break;
utilizar
encabezado ("Ubicación: index.php"); // este trabajo en mi sitio
lea más sobre el http://php.net/manual/en/function.header.php en la documentación de php.
¿Por qué toda esta URL de ubicación?
http://localhost:8080/meet2eat/index.php
solo puedes usar
index.php
si los archivos php están en la misma carpeta y esto es mejor porque si desea alojar los archivos o cambiar el puerto, no tendrá problemas para llegar a esta URL.