Foros del Web » Programando para Internet » PHP »

Variable de session por defecto

Estas en el tema de Variable de session por defecto en el foro de PHP en Foros del Web. Hola a todos, lo que quiero hacer es declarar una variable de session por defecto y segun esta se determina el tipo de idioma. Gracias ...
  #1 (permalink)  
Antiguo 10/11/2003, 08:01
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 3 meses
Puntos: 1
Variable de session por defecto

Hola a todos, lo que quiero hacer es declarar una variable de session por defecto y segun esta se determina el tipo de idioma.


Gracias de antemano
  #2 (permalink)  
Antiguo 10/11/2003, 08:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Supongo que lo quieres es que una variable de sesion tome un valor por defecto. En todas tus paginas podrias poner algo como:
Código PHP:
session_start();
if (!isset(
$_SESSION['tu_variable'])) {
  
$_SESSION['tu_variable']='tu valor por defecto';

Lo que hace es que si no existe la variable en la sesion, la crea con el valor por defecto.

Lo que ya no te puedo asegurar es que despues de ese codigo $_SESSION['tu_variable'] tendra el valor que le has puesto o tendras que esperar a la siguiente carga de pagina.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 10/11/2003, 08:25
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 3 meses
Puntos: 1
Muchas gracias Josemi, voy a hacer las pruebas y cuando tenga algo concreto te cuento como me fue
  #4 (permalink)  
Antiguo 10/11/2003, 09:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Lo que ya no te puedo asegurar es que despues de ese codigo $_SESSION['tu_variable'] tendra el valor que le has puesto o tendras que esperar a la siguiente carga de pagina.
Debe esperar a la siguiente recarga de página para que el array $_SESSION quede disponible con el nuevo valor .. (lo mismo ocurre con cookies ..)

De todas formas .. podría hacer algo tipo:

Código PHP:
session_start();
if (!isset(
$_SESSION['tu_variable'])) {
   
// "registrar" tu variable de sesión con el valor por defecto
  
$lenguaje='tu valor por defecto';
  
$_SESSION['tu_variable']=$lenguaje;
} else {
  
$lenguaje=$_SESSION['tu_variable'];

Y .. en su código que use $lenguaje .. que tomará el valor por defecto si la sesión no está creada .. o el valor que tenga en la variable de sesión si está creada.

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 10/11/2003, 14:37
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
Código PHP:
<?php
/*
jejje, esta me la se, que la hice hace unos dias!

la session lleva el valor del directorio, con lo cual, o lleva 'es' por defecto,
causa de la funcion FUNC_idiomaSelec, o al iniciar el select le decimos mediante
un formulario POST, que idioma queremos, ya sea ingles=en, frances=fr, italiano=it.

te dejo, todo, esto 1º iria en el index, asi tal como esta, y deberias hacer
directorios con los valores del select, es, fr, it, en... etc
*/
session_start();
session_cache_limiter('nocache,private');

    
FUNC_idiomaSelec($_SESSION['idioma']);
require(
"lang/".$_SESSION['idioma']."/idioma.inc.php");//la session lleva el valor del directorio.
?>
<?php
/*
aqui tendriamos la funcion, que como funcion que es la puedes poner en tu fchero
de funcion, y llamarla con el require o include que uses... tb la puedes dejar en
el mismo fichero, no problem, da igual arriba o debajo...

*/

function FUNC_idiomaSelec($langName){//FUNC_idiomaSelec("es");

    
if (empty($_SESSION['idioma'])){

        
$_SESSION['idioma'] = $langName;//no esta la session y la creamos y damos el idioma espanish=>'es' por omision
        
$_SESSION['idioma'] = "es";

     }
}
?>

<?php
/*
... y aqui te dejo el selec, con los idiomas en html todo
********************************************************************************

<!-- inicioBloque: filaGeneraMenuEstLang -->
<table width="92" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td>
            <center><br>
            <form action="lang.inc.php" method="post" name="FormName">
                    <select name="idioma" size="1">
                        <option selected value="es">Castellano</option>
                        <option value="en">Ingles</option>
                        <option value="fr">Frances</option>
                        <option value="du">Aleman</option>
                        <option value="it">Italiano</option>
                    </select><br>
                    <br>
                    <input class="myInput" type="submit" value=".: Change :." name="nuevoTemplate">
                </form>
        </td>
    </tr>
</table>
<!-- finBloque: filaGeneraMenuEstLang -->
*/
?>

<?php
/*
fichero lang.inc.php, para que cuando pulses el formulario, actives el idioma
*/
    
if (empty($_POST['idioma'])) {//si la variable llega vacia error
            
echo "error, no hay session activada";
        exit;
    }

     
session_destroy();
    
session_start();
    
session_cache_limiter('nocache,private');
    
$_SESSION['idioma'] = $_POST['idioma'];

    echo 
"<META HTTP-EQUIV=Refresh CONTENT=1;URL=index.php>";//salto a la recarga de datos y vuelta al index
?>
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 10/11/2003 a las 14:42
  #6 (permalink)  
Antiguo 13/11/2003, 08:48
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 3 meses
Puntos: 1
Bueno, esta funcionando bien la selección del idioma por defecto,
Ej.:
require("includes/".$_SESSION['language']."/english.php");
//la session lleva el valor del directorio.

lo que hace una ruta asi:
includes/en /english.php

pero cuando trato de cambiar a otro idioma, me hace esto
includes/es /english.php

y por supuesto en ese directorio no esta ese archivo.
  #7 (permalink)  
Antiguo 13/11/2003, 09:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, es que si separas los idiomas en directorios es para que los ficheros se llamen igual. Si ese fichero english.php contiene por ejemplo los textos en ese idioma, y espanol.php lo mismo en otro directorio, pues

o creas un array asociativo con clave el id de idioma y valor el nombre del fichero:
Código PHP:
$ficheros=array('en'=>'english''es'=>'espanol');
require(
"includes/".$_SESSION['language']."/".$ficheros[$_SESSION['languaje']].".php"); 
o llamas a los ficheros igual en todos los directorios, por ejemplo idioma.php
Código PHP:
require("includes/".$_SESSION['language']."/idioma.php"); 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 13/11/2003, 10:02
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 3 meses
Puntos: 1
Perfecto ahora si era solo analizar un poco \

Mchisimas gracias!!!!
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 10:18.