Foros del Web » Programando para Internet » PHP »

Problemas con sesiones

Estas en el tema de Problemas con sesiones en el foro de PHP en Foros del Web. Hola a todos. Tengo una web que se supone debe funcionar en varios idiomas. Soy nuevo en php y en principio estaba intentando controlar el ...
  #1 (permalink)  
Antiguo 24/03/2010, 17:43
 
Fecha de Ingreso: febrero-2010
Mensajes: 27
Antigüedad: 14 años, 2 meses
Puntos: 0
Problemas con sesiones

Hola a todos.

Tengo una web que se supone debe funcionar en varios idiomas.
Soy nuevo en php y en principio estaba intentando controlar el idioma a través de una sesión con información que he visto en el foro.

El problema que tengo es que no parece guardar la información y cunado me cambio de pagina vuelve al idioma por defecto.

Lo que tengo mas o menos es:

1. pagina inicio /
session_start($session); #inicio la sesion
header('Cache-control: private'); # IE 6 FIX
require_once('include/language.php'); # Funcion seleccion fichero de idiomas
include_once('Header.php'); # Cabecera de pagina
include_once('home.php'); # cuerpo de pagina
include_once('Footer.php'); # pie de pagina

2. fichero de selección de los lenguajes. En funcion de los valores de las variables de sesion selecciona un idioma para traducción de los textos.
La variable $language la he incluido por que la usaba anteriormente en las consultas a la b.d.

if(isSet($_GET['lang'])){
$lang = $_GET['lang'];
//registra sesion
$_SESSION['lang'] = $lang;
//define cookie
setcookie('lang', $lang, time() + (3600 * 24 * 30));
//busca en variables cookie y session
}else if(isSet($_SESSION['lang'])){
$lang = $_SESSION['lang'];

}else if(isSet($_COOKIE['lang'])){
$lang = $_COOKIE['lang'];

}else{
$lang = 'es';

}

# seleccion del fichero de idiomas.
switch ($lang) {
case 'es':
$lang_file = 'lang.es.php';
$_SESSION['language'] = 1;
break;
case 'en':
$lang_file = 'lang.en.php';
$_SESSION['language'] = 2;
break;
case 'fr':
$lang_file = 'lang.fr.php';
$_SESSION['language'] = 3;
break;
default:
$lang_file = 'lang.es.php'; #por defecto Español
$_SESSION['language'] = 1;
}

include_once ''.$lang_file;

3. una tercera pagina donde selecciono el idioma, en principio tengo un switch que mira si le paso un parametro (por defecto no) y si cambio el lenguaje en la pagina la vuelvo a llamar con el codigo del nuevo idioma y cambiaria el valor de la variable de sesion lang

if (isset($_GET["id"])) {
$newlanguage = $_GET["id"];
switch ($newlanguage) {
case 1: #español
$_SESSION['lang'] = 'es';
break;
case 2: #ingles
$_SESSION['lang'] = 'en';
break;
case 3: #frances
$_SESSION['lang'] = 'fr';
break;
case 4: #portugues
$_SESSION['lang'] = 'po';
break;
case 5: #chino
$_SESSION['lang'] = 'ch';
break;
default: #por defecto español
$_SESSION['lang'] = 'es';
break;
}
} else {
$_SESSION['lang'] = 'es';
};
?>
<?php require_once('include/language.php'); ?>

...
link para ingles
<a href="countries.php?id=2"><img src="image/home/united_kingdom.gif" />United Kingdom</a></li>

...

En la pagina de seleccion cambia perfectamente pero si vuelvo al inicio o me cambio de pagina me vuelve al idioma por defecto (español)

en cada pagina tengo
$language = $_SESSION['language']; (lo deberia cambiar la funcion de lenguaje)
$lang = $_SESSION['lang']; (se me queda vacio)

Alguien me puede echar una mano o decirme como puedo implementarlo.

Muchas gracias.
  #2 (permalink)  
Antiguo 24/03/2010, 17:52
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problemas con sesiones

session_start() no recibe ningún parámetro
  #3 (permalink)  
Antiguo 24/03/2010, 18:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con sesiones

además deberías probar a configurar las cookies de la sesión si es que usas distintos niveles en tus directorios...

revisa la siguiente función antes de continuar:
http://www.php.net/manual/en/functio...kie-params.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: sesiones
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:49.