Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Problemas con variables globales y redirecciones Web

Hola,

¿Cómo va eso? Espero que bien. Tengo un problema raro en PHP con una variable global. Veréis. En cierta página sitúo el siguiente código fuente para comenzar:

Código PHP:
require('config.php');

if(!
$usuario->Autentificado())
{
  
header('Location: entrar');
  die;

Es decir, primero requiero el archivo "config.php", donde a su vez se incluye el archivo que contiene cierta clase "Usuario", en donde a su vez se inicializa la variable "$usuario", conteniendo una instancia de la clase mencionada.

A continuación, como se puede ver, se comprueba si el usuario "actual" de la página está autentificado o no. En caso de no estarlo, y, puesto que la página es sólo para usuarios autentificados, la intención es redireccionar al usuario hacia la página en donde puede autentificarse.

Vale. El caso es que funciona bien, tal como se espera, utilizo a menudo la variable "$usuario" y el método "Autentificado" y no hay ningún problema, salvo en un par de circunstancias, que además coinciden, es decir, que el problema se presenta es el mismo en ambas.

Lamentaría alargarme demasiado, pero, es que no sabría explicarme de otro modo. Intentaré ser breve. Estamos hablando de Loturak, lo digo para que quien sepa del caso se ponga en situación.

Resulta que para añadir enlaces en Loturak es posible utilizar lo que se conoce como "Marcadores". Estos no son sino un poco de código JavaScript incrustado en un enlace (el Marcador) que hace posible añadir enlaces de forma más o menos automática.

Para ello el código JavaScript del Marcador termina llevándonos a la página que para añadir enlaces cuenta Loturak, pero, con ciertos valores ya preparados, como la URL de la Web cuyo enlace quiere añadirse, el título de esta Web, etc.

Pues bien, en los Marcadores está el problema. No en ellos, en realidad, sino que, cuando se carga la página "nuevo.php" (que contiene el código que puse arriba) desde un Marcador, aunque el el usuario esté autentificado, siempre terminamos redirigiéndolo a la página "entrar", o sea, es como si el usuario no estuviera autentificado.

Lo curioso del caso (y lo que me choca) es que cuando pruebo todo esto "en local", es decir, cuando los Marcadores no "llaman" a la página "nuevo.php" del Servidor Web, sino a la copia de Loturak que guardo en mi sistema, todo va como la seda, es decir, como se espera, no hay ningún problema, el usuario es autentificado y, si lo está, pues nada, adelante, se preparan los datos del enlace proveniente del marcador sin problemas.

Intentos de solución. He probado algunas cosas para tratar de solucionar el asunto. Una de ellas ha sido la de, antes de nada, tratar de "limpiar" el caché del navegador (por si tuviera algo que ver) mediante cabeceras HTTP, es decir, algo así:

Código PHP:

header
('Expires: Mon, 05 Dec 1974 05:00:00 GMT');
header('Last-Modified: ' gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');

require(
'config.php');

if(!
$usuario->Autentificado())
{
  
header('Location: entrar');
  die;

Pero, me temo que no parece funcionar bien. Ya digo, en "local" funciona SIEMPRE, no hay ningún problema, es en el Servidor Web en donde tengo problemas, y no por este, sino porque algo estoy pasando por alto, fijo.

La única solución que encontré... es un poco cutre, pero, funciona... Se trata de que los Marcadores redirigan a una página que, ojo al dato, a través de JavaScript y con un par de segundos de "retardo", lleve a su vez al usuario a la página a la que realmente queríamos llegar.

Esto funciona, pero, hoy hemos hecho un cambio en Loturak en relación a los Marcadores, y, encontramos problemas para implementar esto. Y además, qué leche, que pensamos que ha de haber alguna otra solución, y, ¡una explicación de porqué todo va bien "en local" y en el Servidor Web no!

No me extiendo mucho más. Únicamente decir que, puesto que hemos comprobado cómo dando unos segundos de "retardo" la cosa funcionaba más o menos bien (claro, con estos segundos de "retardoz"...), intentamos también algo como esto, sin resultados satisfactorios:

Código PHP:
require('config.php');

sleep(2);

if(!
$usuario->Autentificado())
{
  
header('Location: entrar');
  die;

No hay caso. Disculpad todo este rollo que os he soltado y a ver si alguien ha pasado por alguna experiencia similar y puede echarnos una mano, porque, la verdad, ahora que acabamos de "mejorar" los Marcadores de Loturak, resulta que no funcionan bien, y no por ellos (que han sido mejorados, como digo), sino por lo que vengo contando...

En todo caso muchas gracias de antemano a todos. Si necesitáis más información no tenéis más que decirlo. Gracias de nuevo y que paséis un buen día.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Funciones/variables Globales Jad C++ Builder 3 15-05-2006 19:22:41
Variables Globales Abel Garcia Firebird e Interbase 8 26-09-2005 15:20:59
!variables globales en novell Carlosguiland SQL 1 10-05-2005 16:32:17
Variables globales en PHP JulioGO PHP 3 08-04-2005 14:36:57
Variables Super Globales JANDREGUE Varios 1 18-03-2005 18:03:16


La franja horaria es GMT +2. Ahora son las 22:09:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi