Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2011, 10:44
Avatar de jpa
jpa
 
Fecha de Ingreso: diciembre-2011
Ubicación: A Coruña
Mensajes: 10
Antigüedad: 13 años
Puntos: 2
"Notice: Undefined index:" al dar el valor $_GET a variable

A ver, lo primero presentarme, pues este es mi primer tema en el foro.

Estoy desarrollando una web que se traducirá a 3 idiomas. Cada traducción en un fichero php dentro una subcarpeta de la carpeta lang. (Así, castellano estará en /lang/es/es.php)

La traducción en sí, funciona perfectamente (gracias a lo que he aprendido sobre todo en este foro).

El problema está cuando se entra por primera vez en la web.
Entonces, la variable $lang (que uso para definir el lenguaje) todavía no ha adquirido ningún valor, y esto me genera el siguiente error:

Cita:
Notice: Undefined index: lang in D:\xampp\htdocs\webphp\index.php on line 10

Warning: require(lang//.php) [function.require]: failed to open stream: No such file or directory in D:\xampp\htdocs\webphp\index.php on line 15

Fatal error: require() [function.require]: Failed opening required 'lang//.php' (include_path='.;D:\xampp\php\PEAR') in D:\xampp\htdocs\webphp\index.php on line 15
En cuanto se pasa un valor por GET a la variable todo funciona. Por ejemplo si entro por index.php?lang=en

(Por la ruta ya veis que estoy probando en servidor local utilizando Xampp)

El caso es que le he dado mil vueltas. Y la linea 10 en cuestión

Código PHP:
$lang=$_GET['lang']; 
creo que debe de estar ahí. De lo contrario, cuando se escoja algún idioma y se cargue la página volverá a darle el valor "es" y se mostrará siempre en ese idioma.

El código con el que comienza el index es el siguiente:

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

    
    if(!isset(
$_SESSION['idioma']) || !empty($_GET['lang']))
    {  
        if(empty(
$lang))
        {  
            
$lang="es";
            
$lang=$_GET['lang'];  
        }  
        
$_SESSION['idioma']=$lang;  
    }  
    switch (
$_SESSION['idioma']) {  
    case 
$_SESSION['idioma']: require("lang/".$_SESSION['idioma']."/".$_SESSION['idioma'].".php"); break; }  
?>
Le he dado mil vueltas, he buscado en el foro (y he leído montones de mensajes parecidísimos), he mirado otros foros. Pero sigo sin encontrar 'el cambio' que tengo que hacer.

Obviamente pasa por que $_GET['lang'] tenga un valor cuando aún no se ha recibido ninguno por url. Pero... ¿como?

En fin, que soy consciente de que he llegado a ese punto en el que me he liado de tal forma que seguramente los árboles no me están dejando ver el bosque.