Foros del Web » Programando para Internet » PHP »

leer y guardar datos de un INI

Estas en el tema de leer y guardar datos de un INI en el foro de PHP en Foros del Web. Tengo el siguiente problema. Tengo un archivo de configuracion en el cual tengo que leer dos datos, y el programa PHP que lo va a ...
  #1 (permalink)  
Antiguo 22/04/2003, 08:07
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
leer y guardar datos de un INI

Tengo el siguiente problema.
Tengo un archivo de configuracion en el cual tengo que leer dos datos, y el programa PHP que lo va a utilizar los tiene que guardar como variables de session, el mismo ya tiene generada variables de session pero cuando guardo los dos datos que lee del archivo de configuracion las otras variables se pierden por.
Pregundas como me conviene tomar los datos del archivo de configuracion en el programa php... puede ser con un include
  #2 (permalink)  
Antiguo 22/04/2003, 09:07
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Hay una funcion llamada parse_ini_file que hace exactamente lo que necesitas, busca la documentación en el manual.

Toma en cuenta que el archivo INI deberá tener ciertas caracteristicas.

Saludos!
__________________
Manoloweb
  #3 (permalink)  
Antiguo 22/04/2003, 11:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Chuty ..

Si te fijas .. el 99% de aplicaciones en PHP usan un simple archivo tipo:

config.inc.php
Código PHP:
<?
$varaible
="valor";
$otravaraible="valor2";
?>
Y donde necesites de esas variables (constantes) .. lo metes en tus scripts via un simple:

Código PHP:
requiere("config.inc.php"); 
Y a partir de ahí .. si quieres a su vez modificar esas variables tomandolas como inicio en una sesion .. OK.. O simplemente para no estar "parseando" constantemente ese .ini. Si dices que "pierdes" esas variables .. el problema será con tus variables de sesion .. Para eso pon el código que uses COMPLETO y explica detalladamente los problemas que tengas.

Y eso es lo que tienen que configurar .. Algos definen constantes con define("nombreconstante") .... Pero en si mismo no se suelen complicar con .ini en texto plano.

Es cierto que queda mucho mejor usar un .ini (un archivo de texto plano) para usarlo como configuración, sobre todo cara ususarios innespertos que pudieran "dejarse" alguna comillas por ahi en tu código a la hora de definir variables .. etc ..

Un saludo,
__________________
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; 22/04/2003 a las 11:45
  #4 (permalink)  
Antiguo 23/04/2003, 10:53
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
Gracias a ambos pero el problema sigue, lo mejor les dejo el codigo de ejemplo para que lo puedan revisar,

uno.html
Código PHP:
<HTML>
<
HEAD><TITLE></TITLE></HEAD>
<
BODY>
   <
FORM ACTION="dos.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>
<
tr>
  <
td><strong><font face="verdana" color="#3300cc">Server :</font></strong></td>
  <
td><input type="Text" name="Server" size="20"></td>
</
tr>
</
table>

  <
center><INPUT TYPE="Submit" VALUE="Aceptar" ><center>
<
center
<
BR></td></tr>
</
table>    
   </
FORM>
</
BODY>
</
HTML
dos.php
Código PHP:
<?php
session_start
();
  
$_user $user;
  
$_passw $passw;
  
$_Server =$Server;
  
  
session_register("_user");
  
session_register("_passw");
  
session_register("_Server");

  
// llamada al cuatro.php
  
include('cuatro.php');

  
// Conexión fuente de datos - Validacion del User y Passw
  
$conex odbc_connect($Server$user$passw);   

    if( 
$conex ) {
      
//Se cierra la conexión
      
odbc_close($conex);

            
session_register("Error_Proy");
            
session_register("Error_Apps");
            
session_register("Error_Code");
            
session_register("Descripcion");
            
session_register("UrlRedirect");

      echo 
"<script language = 'javascript'>location.href='http://$_Server_Web/$_AppsPath/SGF_PaneldeControl/tres.php';</script>";

    }

    else {
    
    
$Error_Proy 'SGFCTR-VL'
    
$Error_Apps 'VLOGON';
    
$Error_Code '0000-0001';
    
$Descripcion 'Los datos de Usuario o Clave ingresados son Incorrectos.';
    
$UrlRedirect 'uno.php';

    
     echo 
"<script language = 'javascript'>location.href='http://$_Server_Web/$_AppsPath/SGF_PaneldeControl/error.php';</script>";

    }

?>
cuatro.php
Código PHP:
<?php

    session_start
();

    
// ------------------------------
    // declaración de valores default
    // ------------------------------
    //[PANELDECONTROL]
    
$_Server_Web '192.35.20.5';
    
$_AppsPath 'phptest';

    
// ------------------------------------
    // registro desesión de valores default
    // ------------------------------------
    
session_register("_Server_Web");
    
session_register("_AppsPath");

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

 foreach (
$ini_array[PANELDECONTROL] as $clave=>$valor) {

        if( 
$clave == 'SERVER_WEB' )
            
$_Server_Web $valor;

        if( 
$clave == 'APPSPATH' )
            
$_AppsPath $valor;

    }

?>
cfgini.ini
;;;;;;;;;;;;;;;;
; configuracion
;;;;;;;;;;;;;;;;

[PANELDECONTROL]
SERVER_WEB=MISERVERWEB
APPSPATH=phptest

[ABMFYL]

tres.php
Código PHP:
<?php
  
  session_start
();

echo    
$_Server_Web;
echo    
$_AppsPath;
echo    
$_user;
echo    
$_Server;

?>
en el tres.php se pierden las variables de session $_user, $passw y $_Server.
Espero que me puedan ayudar muchas gracias y saludos
  #5 (permalink)  
Antiguo 23/04/2003, 11:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Conoces como estas propagando el SID? .. Segun lo usas .. estás asumiendo que lo propagas AUTOMATICo y hasta que usas cookies para propagarlo (junto con un navegador que las acepte).

Esas directivas las define en tu php.ini (o phpinfo()):

session.use_trans_sid = 1
session.use_cookies = 1

Esas directivas las puedes "Forzar" via ini_set() para asegurarte que donde instales tu apliación así funcionará .. Otra opcion es que propages el SID de forma MANUAL .. por ejemplo:

Código PHP:
$mi_sid=session_name()."=".session_id(); // aquí obtengo el SID.

echo "<script language = 'javascript'>location.href='http://$_Server_Web/$_AppsPath/SGF_PaneldeControl/tres.php?$sid';</script>"
Así con todos los links que redirecciones o uses (incluidos formularios que deberias usar un campo hidden para pasar el <input type="hidden" name="sid" value="<? echo session_id(); ?>"> )

Repasa el manual de PHP en el apartado sesiones .. He intenta NO usar session_register() y usar $_SESSION para NO asumir las variables de sesion como globales (en las FAQ's primeras tienes un comentario al respecto).

Un saludo
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 17:38.