Foros del Web » Programando para Internet » PHP »

un Include puede hacer que se pierdan las variables.

Estas en el tema de un Include puede hacer que se pierdan las variables. en el foro de PHP en Foros del Web. Tengo el siguiente archivo que me lee un archivo INI Por ejemplo cgf_panel.php - archivo que lee a cfg_panel.ini Código PHP: <?php $ini_array  =  parse_ini_file ...
  #1 (permalink)  
Antiguo 16/04/2003, 14:18
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 2
un Include puede hacer que se pierdan las variables.

Tengo el siguiente archivo que me lee un archivo INI Por ejemplo

cgf_panel.php - archivo que lee a cfg_panel.ini
Código PHP:
<?php

$ini_array 
parse_ini_file("cfg_Panel.ini"TRUE);

foreach (
$ini_array[PANELDECONTROL] as $cfg_valor => $valor) {
   ${
$cfg_valor}=$valor;
}
?>
Este me devuelve 2 variables $Panel y $ Servicio.
A la hora de llamar al cfg_panel.php para recuperar las variables y pasarlas a otra pagina se pierden por el camino, por Ejemplo

Archivo Index.php
Código PHP:
<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>
<H2 ALIGN="CENTER"></H2>
   <FORM ACTION="opcion.php" METHOD="POST">

<center>   
<table border="1" bgcolor="#d4d4d4">
<tr><td><BR>
<table>
<tr>
       <td><strong><font face="verdana" color="#3300cc">Usuario :</font></strong></td>
       <td><INPUT TYPE="Text" NAME="User"></td>
</tr>
<tr>
       <td><strong><font face="verdana" color="#3300cc">Password :</font></strong></td>
       <td><input type="password" name="Passw" size="20">
</td>
</tr>
</table>
<?
// llamada al Sgfctr_ReadIniFile.php
   
include('Sgfctr_ReadIniFile.php');
?>
      <center><INPUT TYPE="Submit" VALUE="Enviar" ><center>
<center> 
<BR></td></tr>
</table>    

   </FORM>
</BODY>
</HTML>

opcion.php
Código PHP:
<?php
 session_start
();
//    -----------------------------------------
//    REGISTRO DE VARIABLES GLOBALES
//    -----------------------------------------
 
$_user $user;
 
$_passw $passw;
 
$_Panel $Panel;
 
$_Servicio $Servicio;

  
session_register("_user");
  
session_register("_passw");
  
session_register("_Panel");
  
session_register("_Servicio");

echo 
"<script language = 'javascript'>location.href='http://$Server_Web/$AppsPath/ctr_InitWork.php';</script>";
?>
ctr_InitWork.php
Código PHP:
<?
session_start
();
echo 
$_user;
echo 
$_passw;
echo 
$_Panel;
echo 
$_Servicio;
?>
se pierden todas las variables..
Que es lo que esta mal...
Si no utilizo el include en el archico que lee el INI el resto de las variables pasan perfectamente ya que estan registradas en la session

Gracias y Saludos a todos
  #2 (permalink)  
Antiguo 16/04/2003, 14:56
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Tus variables deben ser asignadas a algun campo de tu forma, por ejemplo campos ocultos (hidden)...


</table>
Código PHP:
<?
// llamada al Sgfctr_ReadIniFile.php
   
include('Sgfctr_ReadIniFile.php');
echo 
"<input type='hidden' name='Panel' value='".$Panel."'>";
?>
<center><INPUT TYPE="Submit" VALUE="Enviar" ><center>


Bueno, a ver si te entendí bien.
__________________
Manoloweb
  #3 (permalink)  
Antiguo 16/04/2003, 15:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues es lo q dice Manoloweb .. Si no generas un LINK tipo: pagina.php?variable=$variable .. o lo pasas como campos hidden de tu formulario tal cual te mostró Manoloweb .. Es Completamente normal que no se envien (no es que se pierdan .. simplemente TU no las envias "propagas" ..)

Por cierto .. NOOO es necesario que hagas ese tipo de propagación de variables si donde realmente las necesitas es en tu opcion.php ...

Mete ahí tu include:
Código PHP:
<?
// llamada al Sgfctr_ReadIniFile.php
   
include('Sgfctr_ReadIniFile.php');
// resto de tu opcion.php 
?>
Total .. esas variables no las tocas para nada en tu index.php ..las usas como "constantes" que lees de tu .ini que "parseas" con esas funciones ..

Y otro consejo .. NOOOO asumas como globales las variables de sesión. Usa para acceder/registrar variables de sessión los arrays asociados: $_SESSION .. o $HTTP_SESSION_VARS, preferentemente la primera opción. (en las FAQ's tienes una explicación al respecto)

Y en opcion.php .. redirecciona usando cabeceras HTTP:

Código PHP:
header("location [url]http://lomismoq[/url] tienes en version javascrito");
exit; 
Un saludo,

pd: Ya no edito mas xD
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 16/04/2003 a las 15:08
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 11:05.