Foros del Web » Programando para Internet » PHP »

Acerca de Globals

Estas en el tema de Acerca de Globals en el foro de PHP en Foros del Web. Hola amigos la verdad es que hace poco descargue un codigo, el cual posee variables globals, al momento de ejecutarlas en mi localhost funcionan sin ...
  #1 (permalink)  
Antiguo 07/08/2006, 09:53
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
Acerca de Globals

Hola amigos
la verdad es que hace poco descargue un codigo, el cual posee variables globals, al momento de ejecutarlas en mi localhost funcionan sin problema pero al subirlas a mi servidor no funciona este codigo
como puedo remplazar estas variables globals?

un saludo
  #2 (permalink)  
Antiguo 07/08/2006, 10:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Podrías adjuntar el código que usas .. Supongo que asumirá toda variable en forma global con $variable .. o la define como "globals" ..

En cualquier caso en tu servicio de hosting es probable que uses: register_globals a OFF (lo cual hace más segura tu aplicación pero requiere de otros requisito).

Deberías modificar tu código actual para que use los arrays superglobales: $_POST, $_GET, $_SESSION .. etc cuando usa acceso a variables externas (que llegan de un formulario o URL, o son sesione o cookies entre otras cosas).

Revisa este capítulo del manual oficial de PHP al respecto:
http://www.php.net/manual/en/languag...s.external.php


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 07/08/2006, 10:15
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
Hola CLuster
aca esta mi codigo yo comente el global y al moemnto de ejecutar muestra en blanco las variables aparecen vacias

function HTML() {
global $mensaje, $nombre, $email, $url, $tema;
$mensaje = str_replace("<","&lt",$mensaje);
$mensaje = str_replace(">","&gt",$mensaje);
$nombre = str_replace("<","&lt",$nombre);
$nombre = str_replace(">","&gt",$nombre);
$email = str_replace("<","&lt",$email);
$email = str_replace(">","&gt",$email);
$url = str_replace("<","&lt",$url);
$url = str_replace(">","&gt",$url);
return;
}

// Remplazar TAGS

function Remplazar() {
global $mensaje;
$mensaje = str_replace("[:)]","<img src=\"ikon/sonrisa.gif\">", $mensaje);
$mensaje = str_replace("[:(]","<img src=\"ikon/triste.gif\">", $mensaje);
$mensaje = str_replace("[;)]","<img src=\"ikon/ginando.gif\">", $mensaje);
$mensaje = str_replace("[8)]","<img src=\"ikon/ojotes.gif\">", $mensaje);
$mensaje = str_replace("[:P]","<img src=\"ikon/lengua.gif\">", $mensaje);
$mensaje = str_replace("[:D]","<img src=\"ikon/risa.gif\">", $mensaje);
$mensaje = str_replace("[cool]","<img src=\"ikon/cool.gif\">", $mensaje);
$mensaje = str_replace("[llorar]","<img src=\"ikon/llorando.gif\">", $mensaje);
$mensaje = str_replace("[enojo]","<img src=\"ikon/enojado.gif\">", $mensaje);
$mensaje = str_replace("[duda]","<img src=\"ikon/duda.gif\">", $mensaje);
$mensaje = str_replace("[bien]","<img src=\"ikon/bien.gif\">", $mensaje);
$mensaje = str_replace("[mal]","<img src=\"ikon/mal.gif\">", $mensaje);

$mensaje = str_replace("[pota]","<img src=\"ikon/7.gif\">", $mensaje);
$mensaje = str_replace("[cunao]","<img src=\"ikon/9.gif\">", $mensaje);
$mensaje = str_replace("[barco]","<img src=\"ikon/barco.gif\">", $mensaje);
$mensaje = str_replace("[confun]","<img src=\"ikon/confundido.gif\">", $mensaje);
$mensaje = str_replace("[diver]","<img src=\"ikon/divertido.gif\">", $mensaje);
$mensaje = str_replace("[golpes]","<img src=\"ikon/golpes.gif\">", $mensaje);
$mensaje = str_replace("[hola]","<img src=\"ikon/hola.gif\">", $mensaje);
$mensaje = str_replace("[moto]","<img src=\"ikon/moto.gif\">", $mensaje);
$mensaje = str_replace("[ojo]","<img src=\"ikon/ojo.gif\">", $mensaje);
$mensaje = str_replace("[sock]","<img src=\"ikon/sock.gif\">", $mensaje);
$mensaje = str_replace("[zzz]","<img src=\"ikon/zzz.gif\">", $mensaje);
$mensaje = str_replace("[gafa]","<img src=\"ikon/gafa.gif\">", $mensaje);

return;
}

// Función mostrar errores

function FatalError() {
global $error;
for($i = 0; $i < sizeof($error); $i++) {
echo "- $error[$i]<br>";
}
return;
}

// Función sistema de templates

function Template($fichero) {
global $nombre, $email, $url, $mensaje, $fecha, $nfirmas;
$template = fopen($fichero, "r");
while(!feof($template)) {
$buffer = fgets($template, 4096);
$buffer = str_replace("{Nombre}", $nombre, $buffer);
$buffer = str_replace("{Email}", $email, $buffer);
$buffer = str_replace("{URL}", $url, $buffer);
$buffer = str_replace("{Mensaje}", $mensaje, $buffer);
$buffer = str_replace("{Fecha}", $fecha, $buffer);
$buffer = str_replace("{Numero_Firmas}", $nfirmas, $buffer);
echo $buffer;
}
fclose($template);
return;
}

$nfirmas = count(file($FicheroBase));

// Paginacion de mensajes

function Paginacion() {
global $LimiteMensajes, $Base;
if($LimiteMensajes < count($Base)) {
$Paginas = count($Base) / $LimiteMensajes;
echo "<b>Páginas : </b>";
for($i = 0; $i < $Paginas; $i++) {
echo "<a href=index.php?paginado=".$i * $LimiteMensajes.">".( $i + 1 )."</a> ";
}
}
return;
}
?>

hay alguna forma de hacer qeu estas sean variables globales?
puedo crear un archivo en donde declaro todo esto y solo incluyo el archivo en cada pagina php?

un saludo
  #4 (permalink)  
Antiguo 07/08/2006, 10:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si en lugar de usar en tu función:

global $mensaje, $nombre, $email, $url, $tema;

Usas directamente:

$_POST['mensaje']

(y así con las demás .. o $_GET si entran por el URL ..) ... Con eso aseguras tu código y te funcionará uses "register_globals a ON u a OFF".

NO te recomiendo para nada "globalizar" el array $_REQUEST por ejemplo con extract() .. aunque consiguirías el mismo efecto y no tendrías que tocar nada tu código. Usa los arrays superglobales .. es más "sano" y seguro.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 07/08/2006, 10:32
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
Gracias cluster
voy a probar el codigo y te aviso como me fue

saludos

Viva CHile mierddddddddddddddd !!!!
  #6 (permalink)  
Antiguo 07/08/2006, 10:42
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
AHora . . .
deberia cambiar todas mis variables a $_post['mensaje'];

o solo hacer

$mensaje=$_post['mensaje'];

como lo hago?
  #7 (permalink)  
Antiguo 07/08/2006, 10:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo más óptimo sería cambiarlas a $_POST['mensaje'] .. pero lo más rápido para tí sería hacer $mensaje=$_POST['mensaje'] .. Pero, .. para eso ni te molestes en hacer eso .. haces:

Código PHP:
extract($_POST); 
ó si trabajas con $_GET .. lo mismo .. o incluso $_REQUEST ya que contiene todo lo que va en $_POST, $_GET y sean $_COOKIES

al principio de tu código y ya tendrás disponibles las $variables sin nada más que hacer en forma "global".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 07/08/2006, 10:47
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
gracias cluster
pero podrias ser mas especifico en este ejemplo, la verdad es que no entendi mucho esto ultimo de extract

un saludo
  #9 (permalink)  
Antiguo 07/08/2006, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Chudux Ver Mensaje
gracias cluster
pero podrias ser mas especifico en este ejemplo, la verdad es que no entendi mucho esto ultimo de extract

un saludo
Sólo debes colocar esa línea de código que usa extract() al principio de tu código.

Lo que hace esa función (viste la referencia oficial de esa función en php.net?), es "convertir" automáticamente un "array" en general (como lo es $_POST, $_GET .. etc) en variables simples ... Es decir .. de algo como:

$_POST['nose'] .. genera un $nose .. y así con todos los elementos del array que le pases como parámetro a esa función.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 07/08/2006, 11:11
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
Yo de nuevo
probe lo que me recomendaste, en algunas variables funciono a la perfeccion pero en otras arrojo el siguiente error y no comprendo por que

Warning: extract() [function.extract]: First argument should be an array in C:\AppServ\www\new_meth\subdere\funciones.php on line 91
  #11 (permalink)  
Antiguo 07/08/2006, 11:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Chudux Ver Mensaje
Yo de nuevo
probe lo que me recomendaste, en algunas variables funciono a la perfeccion pero en otras arrojo el siguiente error y no comprendo por que

Warning: extract() [function.extract]: First argument should be an array in C:\AppServ\www\new_meth\subdere\funciones.php on line 91
Pero como lo estás usando?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 07/08/2006, 11:20
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
De la siguiente forma :

extract ($_POST['$mensaje']);
extract ($_POST['$nombre']);
extract ($_POST['email']);
extract ($_POST['url']);
extract ($_POST['tema']);
$mensaje = str_replace("<","&lt",$mensaje);
$mensaje = str_replace(">","&gt",$mensaje);
$nombre = str_replace("<","&lt",$nombre);
$nombre = str_replace(">","&gt",$nombre);
$email = str_replace("<","&lt",$email);
$email = str_replace(">","&gt",$email);
$url = str_replace("<","&lt",$url);
$url = str_replace(">","&gt",$url);

esta bien asi?
no me acuso de ningun error en las variaboles del principio del codigo, pero en algunas que seguian mas abajo arrojaba ese warning que mostre denante

un saludo
  #13 (permalink)  
Antiguo 07/08/2006, 11:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te puse un ejemplo .. y en ningún momento puse $_POST['variable'] y menos $_POST[$variable']

se usa simplemente como te comenté:

extract($_POST);

Y listo!.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 07/08/2006, 15:34
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
Hola Cluster
favor de corregirme si esta todo bien, realize lo que me recomendaste y la verdad es que no me funciona
aca pongo un ejemplo de mi una funcion :

function HTML() {

$_POST['nombre'];
$_POST['email'];
$_POST['url'];
$_POST['mensaje'];

extract ($_POST);
$mensaje = str_replace("<","&lt",$mensaje);
$mensaje = str_replace(">","&gt",$mensaje);
$nombre = str_replace("<","&lt",$nombre);
$nombre = str_replace(">","&gt",$nombre);
$email = str_replace("<","&lt",$email);
$email = str_replace(">","&gt",$email);
$url = str_replace("<","&lt",$url);
$url = str_replace(">","&gt",$url);
return;
}

esta bien asi o no?

un saludo favor de ayudarme
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 08:32.