Foros del Web » Programando para Internet » PHP »

Necesito ayuda

Estas en el tema de Necesito ayuda en el foro de PHP en Foros del Web. Hola a todos!! De antemano, daros las gracias a todos por ayudarnos a gente como yo qe no tiene mucha idea. Tengo un problema con ...
  #1 (permalink)  
Antiguo 04/03/2008, 05:32
 
Fecha de Ingreso: septiembre-2007
Mensajes: 100
Antigüedad: 16 años, 6 meses
Puntos: 0
Necesito ayuda

Hola a todos!!
De antemano, daros las gracias a todos por ayudarnos a gente como yo qe no tiene mucha idea.
Tengo un problema con un código. Estoy haciendo una web en varios idiomas (alemán, inglés, francés y español) y además necesito que cuando el usuario elija un idioma la próxima vez que acceda a la página le salga el idioma que eligió anteriormente. Buscando por aquí y por la web encontre un código que me funciona porque me cambia el idioma pero me da este error:
Warning: Cannot modify header information - headers already sent by (output started at C:\Janire\index.php:7) in C:\Janire\index.php on line 20
Además, creo que no me crea la cookie que debería guardar el idioma elegido para las posteriores visitas del usuario.

El código es el siguiente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Idiomas</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<?
// Definimos el idioma por defecto, en este caso será es (español)
$idiomaActual = 'espanol';
// Si se ha seleccionado un idioma se guarda una cookie con el idioma
if(isset($_GET['idioma'])) {
setcookie ("idioma", $_GET['idioma']);
$idiomaActual = $_GET['idioma'];
}
elseif(isset($_COOKIE['idioma'])) {
// Miramos que exista el archivo del idioma
if(file_exists($_COOKIE['idioma'].".php")) {
$idiomaActual = $_COOKIE['idioma'];
}
}
// Incluimos el archivo del idioma seleccionado o el archivo por defecto si no se seleccionó idioma o si no se encuentra el archivo
include $idiomaActual.".php";
?>

<body>
<?=$txt_cambiarIdioma?>
<select onchange="document.location = '<?=$_SERVER['PHP_SELF']?>?idioma=' + this.value">
<option> <?=$txt_idiomas?> </option>
<option value="aleman"> <?=$txt_aleman?> </option>
<option value="espanol"> <?=$txt_espanol?> </option>
<option value="frances"> <?=$txt_frances?> </option>
<option value="ingles"> <?=$txt_ingles?> </option>
</select>
</body>
</html>
La línea en la que me da el error es en la que creo la cookie.

Muchas gracias por vuestra ayuda.
Un saludo, Janire.
  #2 (permalink)  
Antiguo 04/03/2008, 05:47
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: Necesito ayuda

no se cual es tu problema, pero cuando yo envio variables de esta forma:


Código PHP:
<select onchange="document.location = '<?=$_SERVER['PHP_SELF']?>?idioma=' + this.value">
osea con:

<?=$_SERVER['PHP_SELF']?>

despues las recupero con POST:

Código PHP:
if (isset($_POST['idioma'])) { 
y tu lo haces con get:

Código PHP:
if(isset($_GET['idioma'])) { 
no se si sera la solucion y a lo mejor ya lo has intentado, pero sino prueba.
  #3 (permalink)  
Antiguo 04/03/2008, 05:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Necesito ayuda

1.- Usá HTML correcto: agregá la etiqueta FORM correspondiente.
2.- Por el error de header(), leé la página del manual www.php.net/header o esta entrada en las preguntas frecuentes del foro: http://www.forosdelweb.com/f18/faqs-...ml#post2037876


Saludos.
  #4 (permalink)  
Antiguo 05/03/2008, 02:55
 
Fecha de Ingreso: septiembre-2007
Mensajes: 100
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Necesito ayuda

Muchas gracias!!
Ya está resuelto el problema. Simplemente he tenido que cambiar el código y ponerlo al principio de la página y no debajo de la etiqueta de cierre del head.
Lo del post lo probé y no me funcionaba, dejaba de hacer el cambio de idioma.
Un saludo.
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 02:21.