Foros del Web » Programando para Internet » PHP »

Variable indefinida

Estas en el tema de Variable indefinida en el foro de PHP en Foros del Web. Hola a todos... Me pasa lo siguiente y la verdad que estoy desorientado. Estoy armando mi formulario multilenguaje con partes de script de este foro: ...
  #1 (permalink)  
Antiguo 06/05/2008, 17:43
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Variable indefinida

Hola a todos...

Me pasa lo siguiente y la verdad que estoy desorientado. Estoy armando mi formulario multilenguaje con partes de script de este foro:

Tengo en la cabecera del procesa.php (que procesa el formulario) la identificación del idoma del usuario (es-de-en) que según sea, elige el archivo correspondiente al idioma. Para esto lo hago con un include("lang/$idioma.php") que elije el archivo de idioma del Directorio lang donde estan las variables definidas.

Ahora bien, esto forma parte de las otras funciones que procesan el formulario, es decir, hace las comprobaciones y envía un mail para la activación del registro en la BD.

El problema que tengo, es que en la parte de la session_start() pongo las variables definidas en los archivos de idioma y me tira como error de que las variables no estan definidas. Es decir, no está tomando el include("lang/$idioma.php")

Aquí pongo el procesa.php, la aprte de la session_start(), con un ejemplo de como pongo la variable que quiero que me incluya. Se encuentra en la linea donde dice "//Hay campos en blanco" y la variable que pongo se llama $VARIABLE

Por favor, si alguien me puede dar una mano... muy agradecido!
Saludos

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" >
<head>
</head>
<body>

<?php
session_start
();
//datos para establecer la conexion con la base de mysql.
$conexion=mysql_connect('localhost','Usuario','contraseña')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('BD')or die ('Error al seleccionar la Base de Datos: '.mysql_error());


//añadimos la funcion que se encargara de generar un numero aleatorio
function genera_random($longitud){
    
$exp_reg="[^A-Z0-9]";
    return 
substr(eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())),
       
0$longitud);
}


function 
formRegistro(){
?>


<?php
}
// verificamos si se han enviado ya las variables necesarias, las que tenemos en nuestro form cambialo, como sea el tuyo.
if (isset($_POST["apellido"])) {
    
$apellido $_POST["apellido"];
    
$nombre $_POST["nombre"];
    
$email $_POST["email"];
    echo 
"<div style='text-align:center;font-weight:bold;font-size:250%;color:#005784;margin-top:200px;'>";
    echo 
"<span>$apellido </span>";
    echo 
$nombre;
    echo 
"</div>";
    
// Hay campos en blanco
    
if($apellido==NULL|$nombre==NULL|$nacimiento==NULL|$sexo==NULL|$pais==NULL|$residencia==NULL|$provincia==NULL|$email==NULL|$idioma==NULL|$investiga==NULL) {
        echo 
"<div style='font-size:250%;text-align:center;font-weight:bold;color:#B40404;'>$VARIABLE</div>";
        
formRegistro();
        }else{
            
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkemail mysql_query("SELECT email FROM interinfogen WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            if (
$email_exist>0) {
                echo 
"<div style='font-size:130%;text-align:center;font-weight:bold;color:#B40404;'>La cuenta de correo <span style='color:blue;'>$email</span> ya está en uso.</div>";
                
formRegistro();
        }else{

                  
//agregamos la variable $activate que es un numero aleatorio de
                  //20 digitos crado con la funcion genera_random de mas arriba

                  
$activate genera_random(20);

                  
//aqui es donde insertamos los nuevos valosres en la BD  activate y el valor 1 que es desactivado

                
$query 'INSERT INTO interinfogen (apellido, nombre, nacimiento, sexo, pais, residencia, provincia, email, idioma, web, investiga, argentina, rusia, activate, estado)
                VALUES (\''
.$apellido.'\',\''.$nombre.'\',\''.$nacimiento.'\',\''.$sexo.'\',\''.$pais.'\',\''.$residencia.'\',\''.$provincia.'\',\''.$email.'\',\''.$idioma.'\',\''.$web.'\',\''.$investiga.'\',\''.$argentina.'\',\''.$rusia.'\',\''.$activate.'\', 1)';
                
mysql_query($query) or die(mysql_error());



                echo 
"<div style=text-align:center;font-size:130%;>";
                echo 
"<span style='font-weight:bold;font-style:italic;color:#B40404;'>Parece que todo ha ido bien!!!</span><br />";
                echo 
"Ha sido registrado con la cuenta de correo: <span style='font-weight:bold;color:blue;'>$email</span> de manera satisfactoria.<br />";
                echo 
"Le enviaremos ahora un email para activar su cuenta al correo que nos facilito.<br />";
                echo 
"Luego de esa activación, integrará la lista INTER-INFO-GEN con los datos aportados.<br />";
                echo 
"<span style='font-weight:bold;font-style:italic;color:#B40404;'>Muchas gracias por participar!!!</span>";
                echo 
"</div>";



                
$query   "SELECT * FROM interinfogen WHERE apellido='$apellido'";
         
$result mysql_query($query $conexion) or die ( mysql_error() );
         
$row   mysql_fetch_array($result);

         
$path="http://miweb/pagina/formulario//"//creamos nuestra direccion, con las carpetas que sean si hay
         //armamos nuestro link para enviar por mail en la variable $activateLink
$activateLink=$path."activar_cuenta.php?id=".$row['id']."&activateKey=".$activate."";

                          
// Datos del email

$nombre_origen    "miweb";
$email_origen     "miemail";
$email_copia      "miemail";
$email_ocultos    "miemail";
$email_destino    "".$row['email']."";



$asunto           "".$row['apellido'].", por favor active su cuenta";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
                       <tr>
                         <td style="font-size:22px;font-style:italic;font-weight:bold;color:#999999;text-align:center;padding:0 0 5px 0">
                           Alemanes del Volga en Argentina
                         </td>
                       </tr>
                       <tr>
                         <td style="background:#A0E0E0;padding:3px 0 3px 2px;">
                           <div style="color:#000099;font-size:16px;font-family: Arial, Helvetica, sans-serif;font-weight: bold;padding-left:5px;">
                             '
.$row['apellido'].'... estos son los datos aportados por Ud.:
                           </div>
                         </td>
                       </tr>
                       <tr>
                         <td style="text-align:left;">
                           <div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:14px;padding-left:5px;margin:7px 0 0 0;">
                             <strong>Apellido: </strong>'
.$row['apellido'].'<br />
                             <strong>Nombre: </strong>'
.$row['nombre'].'<br />
                             <strong>Nacimiento: </strong>'
.$row['nacimiento'].'<br />
                             <strong>Sexo: </strong>'
.$row['sexo'].'<br />
                             <strong>País: </strong>'
.$row['pais'].'<br />
                             <strong>Ciudad: </strong>'
.$row['residencia'].'<br />
                             <strong>Provincia: </strong>'
.$row['provincia'].'<br />
                             <strong>E-mail : </strong>'
.$row['email'].'</strong><br />
                             <strong>Idiomas: </strong>'
.$row['idioma'].'<br />
                             <strong>Web: </strong>'
.$row['web'].'<br />
                             <strong>Investiga: </strong>'
.$row['investiga'].'<br />
                             <strong>Argentina: </strong>'
.$row['argentina'].'<br />
                             <strong>Rusia: </strong>'
.$row['rusia'].'<br /><br />
                             <span style="font-size:14px;font-weight:bold;color:#B40404;">Su Link de Activación es:</span><br><a href="'
.$activateLink.'">'.$activateLink.'</a><br /><br />
                             <span style="font-size:14px;font-weight:bold;color:#B40404;">Por favor, haga Click en el Link de arriba para activar su cuenta e ingresar al Listado.</span><br /><br />
                             <span style="font-size:14px;font-weight:bold;color:#B40404;">Si el Link no funciona al primer intento, hágalo una segunda vez, el Servidor a veces tarda en procesar la primera orden.</span><br /><br />
                             <span style="font-size:16px;font-style:italic;font-weight:bold;color:#045FB4;">Gracias por participar!!!</span><br /><br />
                           </div>
                         </td>
                       </tr>
                     </table>'
;



$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";
//*****************************************************************//

if($formato == "html")
   {   
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
     else {
       
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";
   }
if (@
mail($email_destino$asunto$mensaje$headers))
    {  }






            }
        }

} else {
    
formRegistro();
}

?>

</body>
</html>
  #2 (permalink)  
Antiguo 06/05/2008, 17:50
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Re: Variable indefinida

No estoy seguro de si será la razón, por que yo siempre trabajo con archivos php puros, es decir cuando necesito salida html utilizo echo.
Pero podría ser que estas enviando información cuando haces
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN".......
antes de iniciar la sesión. Prueba a iniciar la sesión antes de hacer cualquier otra cosa, es decir algo como:
<?php
session_start();
echo"<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"......."...
  #3 (permalink)  
Antiguo 06/05/2008, 18:02
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Hola ocp001a...

Ya intenté hacerlo así y tampoco funciona...
  #4 (permalink)  
Antiguo 06/05/2008, 18:05
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Re: Variable indefinida

Entonces indica cómo y en dónde estás registrando las variables de sesión, ya que a lo mejor ahí está el error.
  #5 (permalink)  
Antiguo 06/05/2008, 18:05
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

La parte de la cabecera que me identifica el idioma y el include ("lang/$idioma.php") es así:

Código PHP:
<?
/* Este código detecta el idioma por defecto del visitante.
Sin embargo, si el visitante indica un idioma mediante la URL (siguiendo un enlace) toma preferencia */

// Miramos si el usuario ha definido un idioma por defecto en su navegador
if ($HTTP_ACCEPT_LANGUAGE != ''){
 
// Si es así, miramos que idiomas ha definido:
    
$idiomas explode(","$HTTP_ACCEPT_LANGUAGE); # Convertimos HTTP_ACCEPT_LANGUAGE en array

 /* Recorremos el array hasta que encontramos un idioma del visitante que coincida con los idiomas en que está disponible nuestra web */
    
for ($i=0$i<count($idiomas); $i++){
  
// Si aún no hemos definido la variable $idioma...
        
if (!isset($idioma)){
   
/* Miramos si tiene algún idioma de los disponibles entre sus favoritos.
   Empezando por su primer favorito y acabando por su último favorito */
            
if (substr($idiomas[$i], 02) == "es"){$idioma "es";}
            if (
substr($idiomas[$i], 02) == "de"){$idioma "de";}
            if (
substr($idiomas[$i], 02) == "en"){$idioma "en";}
        }
    }
}

// Si aún no hemos encontrado ningún idioma que nos convenga, mostramos la web en el idioma por defecto
if (!isset($idioma)){$idioma "es";}

// Ahora incluimos la plantilla de idioma correspondiente al idioma que pertoque:
include("lang/$idioma.php");
?>
  #6 (permalink)  
Antiguo 06/05/2008, 18:22
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Lo que quiero es incorporar en session_start() un echo con una variable que está definida en los achivos de idioma y que los incorporo con include("lang/$idioma.php")... al hacerlo me da el error de variable no definida.

No está tomando las definiciones de las variables que tengo en los archivos para traducir el texto.

Saludos.-
  #7 (permalink)  
Antiguo 06/05/2008, 18:47
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Re: Variable indefinida

Que enredada manera de explicar .. quedó más claro tu último mensaje.

Ocupa requiere() en lugar de include(), así verás si es el problema de inclusión...

Por otra parte, dejaste el código de dos archivos.. el primero es donde se encuentra $VARIABLE (que entiendo es la que "te da el problema") pero en ese código ¡no hay ningún include previo!, ni se ve la definición de la variable... so, es correcto, no existe.

Segundo dejas un código "de la cabecera" .. ¿cabecera de qué?, ¿dónde se encuentra esa parte de código en el flujo de ejecución de tu script?.

Te pediría mostraras el error exacto que te está mostrando. Primero porque hay un error con el manejo de sesión y segundo por que el mismo mensaje de error te dice el archivo y la línea donde esta el problema. Basándose en ese archivo y línea, ¿dónde --anteriormente-- definiste la variable y de qué manera?.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 06/05/2008, 22:43
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Si... es verdad jam1138, lo quice explicar tan detallado que lo complique!!!!

El código lo mostre en partes separada, por no me permitía el foro tantas lineas en el post.

Ya probé con require y sigue dando lo mismo. Aquí pongo todo el código del procesa.php.

Código PHP:
<?
/* Este código detecta el idioma por defecto del visitante.
Sin embargo, si el visitante indica un idioma mediante la URL (siguiendo un enlace) toma preferencia */

// Miramos si el usuario ha definido un idioma por defecto en su navegador
if ($HTTP_ACCEPT_LANGUAGE != ''){
 
// Si es así, miramos que idiomas ha definido:
    
$idiomas explode(","$HTTP_ACCEPT_LANGUAGE); # Convertimos HTTP_ACCEPT_LANGUAGE en array

 /* Recorremos el array hasta que encontramos un idioma del visitante que coincida con los idiomas en que está disponible nuestra web */
    
for ($i=0$i<count($idiomas); $i++){
  
// Si aún no hemos definido la variable $idioma...
        
if (!isset($idioma)){
   
/* Miramos si tiene algún idioma de los disponibles entre sus favoritos.
   Empezando por su primer favorito y acabando por su último favorito */
            
if (substr($idiomas[$i], 02) == "es"){$idioma "es";}
            if (
substr($idiomas[$i], 02) == "de"){$idioma "de";}
            if (
substr($idiomas[$i], 02) == "en"){$idioma "en";}
        }
    }
}

// Si aún no hemos encontrado ningún idioma que nos convenga, mostramos la web en el idioma por defecto
if (!isset($idioma)){$idioma "es";}

// Ahora incluimos la plantilla de idioma correspondiente al idioma que pertoque:
include("lang/$idioma.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" >
<head>
</head>
<body>

<?php
session_start
();
//datos para establecer la conexion con la base de mysql.
$conexion=mysql_connect('localhost','Usuario','contraseña')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('BD')or die ('Error al seleccionar la Base de Datos: '.mysql_error());


//añadimos la funcion que se encargara de generar un numero aleatorio
function genera_random($longitud){
    
$exp_reg="[^A-Z0-9]";
    return 
substr(eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())),
       
0$longitud);
}


function 
formRegistro(){
?>


<?php
}
// verificamos si se han enviado ya las variables necesarias, las que tenemos en nuestro form cambialo, como sea el tuyo.
if (isset($_POST["apellido"])) {
    
$apellido $_POST["apellido"];
    
$nombre $_POST["nombre"];
    
$email $_POST["email"];
    echo 
"<div style='text-align:center;font-weight:bold;font-size:250%;color:#005784;margin-top:200px;'>";
    echo 
"<span>$apellido </span>";
    echo 
$nombre;
    echo 
"</div>";
    
// Hay campos en blanco
    
if($apellido==NULL|$nombre==NULL|$nacimiento==NULL|$sexo==NULL|$pais==NULL|$residencia==NULL|$provincia==NULL|$email==NULL|$idioma==NULL|$investiga==NULL) {
        echo 
"<div style='font-size:250%;text-align:center;font-weight:bold;color:#B40404;'>$VARIABLE</div>";
        
formRegistro();
        }else{
            
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkemail mysql_query("SELECT email FROM interinfogen WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            if (
$email_exist>0) {
                echo 
"<div style='font-size:130%;text-align:center;font-weight:bold;color:#B40404;'>La cuenta de correo <span style='color:blue;'>$email</span> ya está en uso.</div>";
                
formRegistro();
        }else{

                  
//agregamos la variable $activate que es un numero aleatorio de
                  //20 digitos crado con la funcion genera_random de mas arriba

                  
$activate genera_random(20);

                  
//aqui es donde insertamos los nuevos valosres en la BD  activate y el valor 1 que es desactivado

                
$query 'INSERT INTO interinfogen (apellido, nombre, nacimiento, sexo, pais, residencia, provincia, email, idioma, web, investiga, argentina, rusia, activate, estado)
                VALUES (\''
.$apellido.'\',\''.$nombre.'\',\''.$nacimiento.'\',\''.$sexo.'\',\''.$pais.'\',\''.$residencia.'\',\''.$provincia.'\',\''.$email.'\',\''.$idioma.'\',\''.$web.'\',\''.$investiga.'\',\''.$argentina.'\',\''.$rusia.'\',\''.$activate.'\', 1)';
                
mysql_query($query) or die(mysql_error());



                echo 
"<div style=text-align:center;font-size:130%;>";
                echo 
"<span style='font-weight:bold;font-style:italic;color:#B40404;'>Parece que todo ha ido bien!!!</span><br />";
                echo 
"Ha sido registrado con la cuenta de correo: <span style='font-weight:bold;color:blue;'>$email</span> de manera satisfactoria.<br />";
                echo 
"Le enviaremos ahora un email para activar su cuenta al correo que nos facilito.<br />";
                echo 
"Luego de esa activación, integrará la lista INTER-INFO-GEN con los datos aportados.<br />";
                echo 
"<span style='font-weight:bold;font-style:italic;color:#B40404;'>Muchas gracias por participar!!!</span>";
                echo 
"</div>";



                
$query   "SELECT * FROM interinfogen WHERE apellido='$apellido'";
         
$result mysql_query($query $conexion) or die ( mysql_error() );
         
$row   mysql_fetch_array($result);

         
$path="http://miweb/pagina/formulario//"//creamos nuestra direccion, con las carpetas que sean si hay
         //armamos nuestro link para enviar por mail en la variable $activateLink
$activateLink=$path."activar_cuenta.php?id=".$row['id']."&activateKey=".$activate."";

                          
// Datos del email

$nombre_origen    "miweb";
$email_origen     "miemail";
$email_copia      "miemail";
$email_ocultos    "miemail";
$email_destino    "".$row['email']."";



$asunto           "".$row['apellido'].", por favor active su cuenta";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
                       <tr>
                         <td style="font-size:22px;font-style:italic;font-weight:bold;color:#999999;text-align:center;padding:0 0 5px 0">
                           Alemanes del Volga en Argentina
                         </td>
                       </tr>
                       <tr>
                         <td style="background:#A0E0E0;padding:3px 0 3px 2px;">
                           <div style="color:#000099;font-size:16px;font-family: Arial, Helvetica, sans-serif;font-weight: bold;padding-left:5px;">
                             '
.$row['apellido'].'... estos son los datos aportados por Ud.:
                           </div>
                         </td>
                       </tr>
                       <tr>
                         <td style="text-align:left;">
                           <div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:14px;padding-left:5px;margin:7px 0 0 0;">
                             <strong>Apellido: </strong>'
.$row['apellido'].'<br />
                             <strong>Nombre: </strong>'
.$row['nombre'].'<br />
                             <strong>Nacimiento: </strong>'
.$row['nacimiento'].'<br />
                             <strong>Sexo: </strong>'
.$row['sexo'].'<br />
                             <strong>País: </strong>'
.$row['pais'].'<br />
                             <strong>Ciudad: </strong>'
.$row['residencia'].'<br />
                             <strong>Provincia: </strong>'
.$row['provincia'].'<br />
                             <strong>E-mail : </strong>'
.$row['email'].'</strong><br />
                             <strong>Idiomas: </strong>'
.$row['idioma'].'<br />
                             <strong>Web: </strong>'
.$row['web'].'<br />
                             <strong>Investiga: </strong>'
.$row['investiga'].'<br />
                             <strong>Argentina: </strong>'
.$row['argentina'].'<br />
                             <strong>Rusia: </strong>'
.$row['rusia'].'<br /><br />
                             <span style="font-size:14px;font-weight:bold;color:#B40404;">Su Link de Activación es:</span><br><a href="'
.$activateLink.'">'.$activateLink.'</a><br /><br />
                             <span style="font-size:14px;font-weight:bold;color:#B40404;">Por favor, haga Click en el Link de arriba para activar su cuenta e ingresar al Listado.</span><br /><br />
                             <span style="font-size:14px;font-weight:bold;color:#B40404;">Si el Link no funciona al primer intento, hágalo una segunda vez, el Servidor a veces tarda en procesar la primera orden.</span><br /><br />
                             <span style="font-size:16px;font-style:italic;font-weight:bold;color:#045FB4;">Gracias por participar!!!</span><br /><br />
                           </div>
                         </td>
                       </tr>
                     </table>'
;



$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";
//*****************************************************************//

if($formato == "html")
   {   
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
     else {
       
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";
   }
if (@
mail($email_destino$asunto$mensaje$headers))
    {  }






            }
        }

} else {
    
formRegistro();
}

?>

</body>
</html>
  #9 (permalink)  
Antiguo 06/05/2008, 22:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Justo antes del DOCTYPE ESTÁ EL include("lang/$idioma.php");

El error que me da es éste:
Notice: Undefined variable: VARIABLE in C:\Archivos de programa\Apache Group\Apache2\htdocs\miweb\pagina\formulario\inter infogen\procesa.php on line 70

Saludos y gracias por la ayuda.-
  #10 (permalink)  
Antiguo 07/05/2008, 01:34
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Re: Variable indefinida

Ok... mejor.

Primero te sugiero utilices requiere(). Con requiere "obligas" al que el archivo sea incluido o el script se detiene. En tu caso, a como lo entiendo, precisamente requieres la inclusión se haga sino tu script podría tener fallas, como es ahora el caso.

Salvo por el mal (y aparentemente inútil) uso de session_start() (¿utilizas en verdad sesiones?) y el que la función formRegistro() este vacía... no alcanzo a ver el error en este código.

Te sugiero imprimas al final del archivo que es incluido (como puede ser es.php) la dichosa variable y confirmes en efecto tiene un valor en ese script... es probable el error esté en dichos archivos.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 07/05/2008, 07:37
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Hola jam1138...

1.- La variable $VARIABLE es la única que he puesto, para probar si funcionaba y al ver que no ponía su definición ahí paré de colocar variables del idioma.

2.- Si la variable la coloco de esta forma <? echo $VARIABLE; ?> en el body pero fuera de session _start() funciona perfectamente... es decir, me imprime la traducción.

3.- El procesa.php luego de las comprobaciones y de cargar en BD los datos introducidos por el usuario en el formulario, envía un mail con un link de activación... por eso el uso de session_start(), tal vez lo esté usando mal.

4.-
Este procesa.php ya lo he probado sin esto del idioma y funciona perfectamente. Ahora estoy tratando de incorporar lo del idioma y me encuentro de que en la parte de session_start() de la forma que coloco dentro del echo la variable, en este caso $VARIABLE (una única variable de prueba)... no la imprime y me dice que la variable no está definida.

Saludos.-
  #12 (permalink)  
Antiguo 08/05/2008, 00:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Re: Variable indefinida

Hola paulkees

En realiad me confunde mucho como estas conceptualizando las cosas. "Fuera de session_start()", "incorporar en session_start()", "el body", "la cabecera" ...

Primero, session_start() es una función, no "abarca" nada, no hay nada "dentro" o "fuera" de esta función, solo indica que el script utilizará sesiones PHP, punto.

Segundo... si ese es todo tu código, el uso de session_start() es erróneo e inútil. Las sessiones de PHP es otra cosa que nada involucra con recibir datos de un formulario, con conexiones a la base de datos o con el envio de correos electrónicos. No sé qué idea tengas al hacer uso de esta función... te invito a revisar las FAQ y la documentación oficial en los temas de sesiones.

Tercero... entiendo hiciste lo del cambio de include() por require() y el imprimir la variable dentro de ese archivo incluido... ¿y esto funcionó? eso sí es raro... por favor confirma hiciste eso.

que el codigo que ahora muestras haga:
Código PHP:
require('algo/archivo.php'); 
y en archivo.php (tú archivo que incluyes) tenga:
Código PHP:
<?php
$VARIABLE 
'Algo'// asegurate de darle valor
echo $VARIABLE;  // e imprimir su valor DENTRO del mismo script
... sí imprime el valor... en serio estamos en problemas. Si no ... ¿qué pasa si cambias <? por <?php --como debe ser, procura utilizar esta forma siempre-- en este código que dejas?

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #13 (permalink)  
Antiguo 08/05/2008, 00:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Variable indefinida

jam1138 ¿como te aplaudo?
  #14 (permalink)  
Antiguo 08/05/2008, 02:46
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Variable indefinida

Juntando las Palmas de las Manos :]
  #15 (permalink)  
Antiguo 08/05/2008, 07:52
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Hola jam1138... realmente muchas gracias por ayudarme!

1.- Eliminé session_start()

2.- Cambié <? por <?php

3.- incluí el archivo con require("lang/es.php"); Ahora he puesto "lang/es.php" en lugar de "lang/$idioma.php".

4.- A este archivo "lang/es.php" le he cambiado también <? por <?php... y ahí sí Definió $VARIABLE... ahí funcionó!!! Era como deciás jam1138!!!

El asunto ahora con respecto a la finalidad del script, es que si cambio nuevamente a require("lang/$idioma.php") me da este error:

Warning: require(lang/.php) [function.require]: failed to open stream: No such file or directory in C:\Archivos de programa\Apache Group\Apache2\htdocs\miweb\pagina\formulario\inter infogen\registro2.php on line 27

Fatal error: require() [function.require]: Failed opening required 'lang/.php' (include_path='.;C:\php5\pear') in C:\Archivos de programa\Apache Group\Apache2\htdocs\miweb\pagina\formulario\inter infogen\registro2.php on line 27

Recordemos que con require("lang/$idioma.php"), estoy incluyendo el archivo de idioma según el que tenga el usuario en su navegador.

Saludos y gracias por tu tiempo!
  #16 (permalink)  
Antiguo 08/05/2008, 08:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Variable indefinida

mira bien tu ERROR: 'lang/.php'

si te das cuenta, ahi no viene algun nombre de archivo ((deveras)) deberias comprobar primero la existencia del "lenguaje" ANTES de cargarlo... no?
  #17 (permalink)  
Antiguo 08/05/2008, 08:14
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Si, pero aquí lo estoy haciendo... $idioma= es, de, en y lo hace según se vea que idioma tiene por elección el usuario en su navegador!!!

Código PHP:
<?php
/* Este código detecta el idioma por defecto del visitante.
Sin embargo, si el visitante indica un idioma mediante la URL (siguiendo un enlace) toma preferencia */

// Miramos si el usuario ha definido un idioma por defecto en su navegador
if ($HTTP_ACCEPT_LANGUAGE != ''){
 
// Si es así, miramos que idiomas ha definido:
    
$idiomas explode(","$HTTP_ACCEPT_LANGUAGE); # Convertimos HTTP_ACCEPT_LANGUAGE en array

 /* Recorremos el array hasta que encontramos un idioma del visitante que coincida con los idiomas en que está disponible nuestra web */
    
for ($i=0$i<count($idiomas); $i++){
  
// Si aún no hemos definido la variable $idioma...
        
if (!isset($idioma)){
   
/* Miramos si tiene algún idioma de los disponibles entre sus favoritos.
   Empezando por su primer favorito y acabando por su último favorito */
            
if (substr($idiomas[$i], 02) == "es"){$idioma "es";}
            if (
substr($idiomas[$i], 02) == "de"){$idioma "de";}
            if (
substr($idiomas[$i], 02) == "en"){$idioma "en";}
        }
    }
}

// Si aún no hemos encontrado ningún idioma que nos convenga, mostramos la web en el idioma por defecto
if (!isset($idioma)){$idioma "es";}

// Ahora incluimos la plantilla de idioma correspondiente al idioma que pertoque:
require("lang/$idioma.php");
?>
  #18 (permalink)  
Antiguo 08/05/2008, 08:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Variable indefinida

pues echale coco, porke el problema es ke tal variable ((o valor)) no existe....

ademas, si substr($idiomas[$i], 0, 2) contiene el valor de 2 caracteres para el lenguaje, porke haces comparaciones if-then-else vaya... no son necesarios, intenta pasar este valor directamente a $lang...
  #19 (permalink)  
Antiguo 08/05/2008, 08:34
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Disculpas... pero no te entiendo. Por favor, podrías darme un ejemplo u orientarme más detalladamente... o como lo harías!

Gracias y saludos.-
  #20 (permalink)  
Antiguo 08/05/2008, 08:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Variable indefinida

Código PHP:
if (!isset($idioma))
{
 
$idioma=substr($idiomas[$i], 02);
}

$archivo="lang/{$idioma}.php";
if (!
is_file($archivo))
{
  
// en verdad existimos?

  #21 (permalink)  
Antiguo 08/05/2008, 08:55
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Nuevamente disculpas pateketrueke... pero eso iría en reemplazo de qué?
  #22 (permalink)  
Antiguo 08/05/2008, 09:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Variable indefinida

no te lo estoy dando para ke lo uses, es para ke lo estudies... y si te ajusta, dale
  #23 (permalink)  
Antiguo 08/05/2008, 09:20
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Disculpas nuevamente y definitivamente pateketrueke...

No entiendo muy bien por que te has metido en el post, has mandado 5 mensajes y no has clarificado nada.

Aparentemente, "eres un erudito en php" y las consultas de otros las estás considerando muy torpes. A lo mejor "estarás acostumbrado a los alumnos que tienes en tu escuela".

Foros del Web es una comunidad de ayuda y no de soberbia. Si no es tu caso, sirva ésto como aclaración.

El post y el inconveniente que tengo para solucionar el script, debido a mi "torpeza", lo estaba llevando adelante con jam1138... tu aparición no la entiendo muy bien.

Saludos.-
  #24 (permalink)  
Antiguo 08/05/2008, 09:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Variable indefinida

Hola paulkees,

El código que te dejo pateketrueke, es correcto, y la idea como bien te dice él es que lo analices y lo adaptes a tu código de chequeo de idioma, ya que tu problema está ahí, como no defines después de tu código el idioma, al hacer el require te falla, ya que no existe el archivo.

Saludos.
  #25 (permalink)  
Antiguo 08/05/2008, 10:04
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Re: Variable indefinida

Cita:
Iniciado por paulkees Ver Mensaje
Warning: require(lang/.php) [function.require]: failed to open stream: No such file or directory in C:\Archivos de programa\Apache Group\Apache2\htdocs\miweb\pagina\formulario\inter infogen\registro2.php on line 27
¿Te das cuenta del nombre del archivo que intenta incluir?... no tiene nombre, solo la extención. La variable que estas concatenando no tiene valor.

Cambia isset() por empty(). La primera solo ve si la variable esta definida, pero puede estar definida con un valor vacío; la segunda ve por su valor.

Igual concatena bien la cadena:
Código PHP:
$archivo "ruta/".$nombre.".php";
require (
$archivo); 
... y creo con eso debe funcionar .

Suerte!


---------------------
Cita:
Iniciado por paulkees Ver Mensaje
Disculpas nuevamente y definitivamente pateketrueke...

No entiendo muy bien por que te has metido en el post, has mandado 5 mensajes y no has clarificado nada.

Aparentemente, "eres un erudito en php" y las consultas de otros las estás considerando muy torpes. A lo mejor "estarás acostumbrado a los alumnos que tienes en tu escuela".

Foros del Web es una comunidad de ayuda y no de soberbia. Si no es tu caso, sirva ésto como aclaración.

El post y el inconveniente que tengo para solucionar el script, debido a mi "torpeza", lo estaba llevando adelante con jam1138... tu aparición no la entiendo muy bien.

Saludos.-
... no soy quien para dar sermones ni criticar a la gente ... pero sí te invito a que te leas y reflexiones sobre tu actitud.

Cierto, no es una comunidad de eruditos, pero tampoco es una comunidad de "arréglame mis problemas". Si bien pateketrueke no te dijo paso a paso que hacer, te señalo bien cual es el error y puso código para tratar ese error ... y pareciera ni lo analizaste. Corto tiempo de respuestas, ningún indicio de que hayas intentado aplicar el código...

Esa actitud de "quítate, no necesito que me hagas pensar" tampoco hacen bien a la comunidad. Al menos hay mejores formas de decir "gracias, pero no gracias" si fuese tu caso.

Mis disculpas por salirme de tema. La sugerencias de pateketrueke es correcta y tiene razón en lo de las condiciones para asignar el valor a la variable $idioma.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #26 (permalink)  
Antiguo 08/05/2008, 10:43
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

Pido disculpas si ofendí a alguien.... pido disculpas a pateketrueke...

Tal vez el agobio, el arrebato me hizo decir cosas inadecuadas, desconsideradas e inoportunas.

Me dedico a ésto por una sola página, sin lucro... trato de mejorarla, de entender pero la realidad es que mucho del lenguaje me supera, me esfuerzo por comprender, relacionar y experimentar para fijar el conocimiento.

Desde ya muchas gracias!

Saludos.-
  #27 (permalink)  
Antiguo 08/05/2008, 13:25
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Variable indefinida

No puedo hacerlo funcionar de la forma que em dicen... ahora, viendo alternativas probé hacer esto y funciona:

Código PHP:
<?php
//Ahora leemos del navegador cuál es su lengua oficial
$idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2);
// Ahora incluimos la plantilla de idioma correspondiente al idioma que pertoque:
require("lang/$idioma.php");
?>
Lo que no se si realmente está bien hecho o si trae algún inconveniente utilizarlo de ésta forma.

Saludos.-
  #28 (permalink)  
Antiguo 08/05/2008, 13:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Variable indefinida

averigua el valor completo de $HTTP_ACCEPT_LANGUAGE;

por lo general necesitas averiguar el formato del dato en cuestion, con solo usar ese substr() parece ke bastaria... pero, weno... uno nunca sabe ... 'ta bien!!!!

"primero analiza la zona, los personajes... las variables y luego, ataca"
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 05:45.