Foros del Web » Programando para Internet » PHP »

no puedo recoger una variable global...

Estas en el tema de no puedo recoger una variable global... en el foro de PHP en Foros del Web. Hola a todos, resulta que estoy haciendo unas cosillas en las que necesito guardar una información en una variable global para después recogerla desde varios ...
  #1 (permalink)  
Antiguo 11/01/2006, 09:33
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 13 años, 1 mes
Puntos: 1
no puedo recoger una variable global...

Hola a todos, resulta que estoy haciendo unas cosillas en las que necesito guardar una información en una variable global para después recogerla desde varios scripts...

en globales.php tengo:
Código:
<?php $cadenaglobal = ""; ?>
en index.php tengo:
Código:
<?php
...
require("globales.php");
...
global $cadenaglobal;
$cadenaglobal = "eltextodelacadena";
...
echo "<form name=\"Form\" action=\"otro.php\" method=\"post\">\n";
...
echo "</form>\n";
...
?>
finalmente, en otro.php tengo:
Código:
<?php
...
global $cadenaglobal;
echo $cadenaglobal;
...
?>
La cuestión es que la primera vez que intento usar variable global si que la recojo correctamente... pero la segunda vez, en otro.php, no hay manera.

A alguno de vosotros se os ocurre que puede estar pasando??

Muchas gracias!
  #2 (permalink)  
Antiguo 11/01/2006, 09:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. en "otro.php" haces el include() correspondiente a tu globales.php?

Por cierto .. para que haces "global" (declaración de la variable) si no estás dentro de una función?) ... (el declarar global al principio de un script me "suena" a PHP versión 3? ...)

Por cierto .. podrías usar: $GLOBALS para acceder a tus variables "globables" desde dentro de funciones sin problemas ( y así no tener que declarar un "global $variable" en cada función que quieras accederlas).

Revisa la ducumentación de PHP al respecto:
http://www.php.net/manual/en/languag...bles.scope.php

Un saludo,

Última edición por Cluster; 11/01/2006 a las 09:56
  #3 (permalink)  
Antiguo 11/01/2006, 13:35
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 13 años, 1 mes
Puntos: 1
Hola, ahora que lo dices se me ha olvidado poner que en index.php estoy dentro de una función cuando uso "globals $cadenaglobal".

Además cambié el valor inicial de la cadenaglobal pq si estaba vacía no podía debuggar bien...

Ahora tengo esto:

en globales.php tengo:
Código:
<?php $cadenaglobal = "xxx"; ?>
en index.php tengo:
Código:
<?php
...
require("globales.php");
...
function func(){
  global $cadenaglobal;
  $cadenaglobal .= "eltextodelacadena";
};
...
func();
echo "<form name=\"Form\" action=\"otro.php\" method=\"post\">\n";
...
echo "</form>\n";
...
?>
finalmente, en otro.php tengo:
Código:
<?php
...
require("globales.php");
echo $cadenaglobal;
...
?>
Ahora modifico $cadenaglobal cuando entro a la función, pero despues, en "otro.php", que procesa el formulario, me aparece en pantalla "xxx" en lugar de "xxxeltextodelacadena"...

Intentaré con $GLOBALS i me leeré la documentación esa a ver...

Gracias por contestar
  #4 (permalink)  
Antiguo 11/01/2006, 15:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ya ya .. ahora ví tu proceso.

Si tu haces una definición de variable tipo:

$nose="valor";

sea en el mismo script o en otro que llames por un include() . .cara al script que lo llama ese será su valor.

Si tu modificas el valor de tu variable en un script y -pasas- a otro script .. toda variable "muere" al terminar la ejecución de tu primer script cara al seguro o subsiguientes.

Para solventar el problema, debes -propagar- a tu Segundo script (otro.php) tu variable y tomarla en esta.

Sería algo tipo:
Código PHP:
function func(){
  global 
$cadenaglobal;
  
$cadenaglobal .= "eltextodelacadena";
  return 
$cadenaglobal;
};
...
func();
echo 
"<form name=\"Form\" action=\"otro.php\" method=\"post\">\n";
echo 
"<input type=\"hidden\" name=\"variable\" value=\"".func()."\">\n";
...
echo 
"</form>\n"
Y en otro.php ..

recibes tu variable "oculta" que propagastes en tu formulario y la usas:

Código PHP:
$cadenaglobal=$_POST['variable']; 
Por supuesto .. no puedes usar tu require("globales.php"); por qué ahí defines con un valor "fijo" a tu $cadenaglobal ...

Lo normal sería que usases variables de sesión (www.php.net/session), tu archivo que defines como "globales.php" no se usa como en "ASP" (el global.asa por si vienes de ASP a PHP) .. Para eso tienes que usar sesiones o cookies incluso .. o un archivo tuyo que manejes manualmente, es decir, que tu te encargues de modificar ese valor cuando cambie en un script para leerlo en otro (eso es lo que hace una sesión con funciones y métodos própios "transparentes" para ti PHP).

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:40.