Foros del Web » Programando para Internet » PHP »

Error inexplicable

Estas en el tema de Error inexplicable en el foro de PHP en Foros del Web. Código PHP: <? require  'restringir.php' ; require  'top.php' ; require  'menu.php' ; $mensaje [ 1 ]= "El usuario fue actualizado satisfactoriamente" ; $mensaje [ 2 ]= "El usuario no pudo ser actualizado" ; $mensaje ...
  #1 (permalink)  
Antiguo 27/12/2002, 23:37
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Error inexplicable

Código PHP:
<?
require 'restringir.php';
require 
'top.php';
require 
'menu.php';

$mensaje[1]="El usuario fue actualizado satisfactoriamente";
$mensaje[2]="El usuario no pudo ser actualizado";
$mensaje[3]="El proyecto fue actualizado satisfactoriamente";
$mensaje[4]="El proyecto no pudo ser actualizado";

echo 
"<br><br><div align=center><font face=Arial color=red size=2>";
echo 
$mensaje[$HTTP_GET_VARS['mensaje']];
echo 
"</font></div><br><br>";

require 
'down.php';
?>
Tengo el anterior código para mostrar diversos mensajes, pero... en mi máquina funciona bien, me muestra todo el mensaje pero al subirlo al server solo me muestra una "E"

Así es el código HTML que me genera:

Código PHP:
  <tr
    <
td bgcolor="#FFFFFF"><b><font size="2" face="Arial, Helvetica, sans-serif" color="#000066"><a href="administrar_contactos.php">Administrar 
      Contactos entre usuarios
</a></font></b></td>
  </
tr>
</
table><br><br><div align=center><font face=Arial color=red size=2>E</font></div><br><br></body>
</
html
Como les comento, en mi máquina muestra bien el mensaje y en el server no.

A que s epuede deber?
  #2 (permalink)  
Antiguo 27/12/2002, 23:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. yo tambien he tenido problemillas al usar los arrays asociados tipo $HTTP_xxx o incluso $_XXX como indices de otras arrays ..

No se ténicamente porqué sucede .. parece como si evaluase el indice del array y accediera al string[] .. indice 0 .. pero no se muy bien q es lo q sucede ..

El caso q lo soluciono así:
Código PHP:
$id_mensaje=$HTTP_GET_VARS['mensaje'];
$mensaje[$id_mensaje]; 
Si alguien sabe porqué sucede esto "técnicamente" seria bueno que lo explicase .. ¿influirá la versión de PHP? .. por la gestión de indices de arrays?

Un saludo,
  #3 (permalink)  
Antiguo 28/12/2002, 00:07
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Pues no funciona !!!

Resulta que solo me muestra el primero caracter de algun elemento del arreglo. Y no tengo ni la más remota idea de por que en el server no jala !!!
  #4 (permalink)  
Antiguo 28/12/2002, 00:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. jeje justo estaba leyendo el change_log de PHP 4.3.0

Parece que hay un problemilla cuando se usan nombres de arrays iguales a nombres de variables que se usan en los arrays asociados:

Cita:
Fixed bug #20796 (when register_globals is on & arrays with same names are passed via get/post/cookie the data inside $_GET/$_POST/$_COOKIE can would be corrupted). (Ilia)
(aunque ahi se nombra los "superglobales" .. no se si tendrá algo q ver con los $HTTP_xxx ... y yo usé otra configuración. Supongo que parte del embrollo es por usar register_globals a ON .. asumiendo como globales la misma variable que se pasa al script que tiene el array de mismo nombre?¿)

Lo probé en mi PHP 4.3.0RC1 (register_globals a OFF) así; con nombre del array diferente y funcionó (me daba el mismo efecto q a ti .. con el "E" solo):

Código PHP:
$mensajes[1]="El usuario fue actualizado satisfactoriamente";
$mensajes[2]="El usuario no pudo ser actualizado";
$mensajes[3]="El proyecto fue actualizado satisfactoriamente";
$mensajes[4]="El proyecto no pudo ser actualizado";

echo 
"<br><br><div align=center><font face=Arial color=red size=2>";
$id_mensaje=$HTTP_GET_VARS['mensaje'];
echo 
$mensajes[$id_mensaje];
echo 
"</font></div><br><br>"
Un saludo,

Última edición por Cluster; 28/12/2002 a las 00:40
  #5 (permalink)  
Antiguo 28/12/2002, 00:47
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Excelente !!!

ya funca

Gracias otra vez !
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 19:53.