Error simple pero no lo veo, funcion setcookie

Iniciado por ZharkD, 28 Marzo 2010, 21:33 PM

0 Miembros y 2 Visitantes están viendo este tema.

ZharkD

Hola,
Pues tengo un error en uno de mis sitios, http://ptcsociety.co.cc
Me tira un error en la cabezera e incluso muestra "espacio en blanco" siendo que no deberia, no tengo echo en esos archivos.

Bueno el problema radica cuando deseo cambiar el idioma del sitio, por favor vean ustedes mismos para ver si me pueden ayudar a identificar el problema.

Si necesitan datos extra no duden en decirmelo :)

Gracias pro su atencion a este tema.

Nakp

estas enviado la cookie despues de haber enviado contenido html, la session o cookie debe ser lo primero en ser enviado
Ojo por ojo, y el mundo acabará ciego.

ZharkD

Cita de: Nakp en 28 Marzo 2010, 22:36 PM
estas enviado la cookie despues de haber enviado contenido html, la session o cookie debe ser lo primero en ser enviado
Hola,
Gracias por tu comentario, si tambien entendi eso, sin embargo no entiendo porque de "una fecha" para aca me tiraba el error, ese archivo lo tengo en idioma.php el cual esta incluido antes del html.
Alguna idea?

Castg!

mira, si no es mucha molestia estaria bueno que subas el codigo, asi vemos donde tenes que cambiar las lineas.

ZharkD

#4
Cita de: Castg! en 29 Marzo 2010, 01:20 AM
mira, si no es mucha molestia estaria bueno que subas el codigo, asi vemos donde tenes que cambiar las lineas.
Hola,
jeje para nada, mil gracias, aqui les dejo el codigo de idioma.php y la parte del head de index.php:
Código (idioma.php) [Seleccionar]
<?php
$langurl $_GET['lang'];
if (isset($_COOKIE['Idioma']))
{
$lang $_COOKIE['Idioma'];
}
else
{
$lang substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
}
if ($langurl == 'es' || $langurl == 'en')
{
$lang $langurl;
setcookie('Idioma'$langtime() + 3600 24 365); // LINEA 14
}
else
{
if (!$_COOKIE['Idioma']) 
{
if ($nav == 'es')
{
    
setcookie('Idioma'$langtime() + 3600 24 365);
}
else
{
     setcookie('Idioma'$langtime() + 3600 24 365);
}
}
}
if($lang == 'es')
{
include('./basic/es.php');
}
else
{
include('./basic/en.php');
}
?>

Código (index.php) [Seleccionar]
<?php include('./basic/idioma.php'); ?>
<!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>Aqui los metas y blabla</head>
y continua con body...


Castg!

Código (php) [Seleccionar]
<?php
$langurl $_GET['lang'];
if (isset($_COOKIE['Idioma']))
{
$lang $_COOKIE['Idioma'];
}
else
{
$lang substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
}
if ($langurl == 'es' || $langurl == 'en')
{
$lang $langurl;
setcookie('Idioma'$langtime() + 3600 24 365); // LINEA 14
}
elseif (!$_COOKIE['Idioma'])  {
setcookie('Idioma'$langtime() + 3600 24 365);
}
if($lang == 'es')
{
include('./basic/es.php');
}
else
{
include('./basic/en.php');
}
?>


cambie unas cosas, pero el error me parece rarisimo!!:-\

ZharkD

#6
Cita de: Castg! en 29 Marzo 2010, 02:30 AM
cambie unas cosas, pero el error me parece rarisimo!!:-\
Ohh si, jeje esa condicion era inecesaria, no recuerdo porque la puse XD

Bueno, pues de igual manera realize esa correxion pero... nop.
Como dije, antes no pasaba, empezo de unos dias apra aca, tendra relacion con mi webhost?
No se si sea posible que el webhost me este causando estos problemas ya que parece que las funciones php que utilizo SI estan habilitadas por lo que no veo el problema :S
Muy raro XD

AGREGO:
Realize una modificacion, creo que quedo mas bonito asi (Igual el error continua XD)
Código (php) [Seleccionar]
<?php
if (
$_GET['lang'] == 'es' || $_GET['lang'] == 'en')
{
$lang $_GET['lang'];
setcookie('Idioma'$langtime() + 3600 24 365); // AHORA TIRA ERROR AQUI
}
else
{
if (isset($_COOKIE['Idioma']))
{
$lang $_COOKIE['Idioma'];
}
else
{
$lang substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
setcookie('Idioma'$langtime() + 3600 24 365);
}
}
if($lang == 'es')
{
include('./basic/es.php');
}
else
{
include('./basic/en.php');
}
?>

LuffyFF

Si mal no me equivoco, el error se debe a que tengas el header.php o algun otro file como los de idiomas de tu pagina codificado en UTF-8?

Pon los archivos en ANSI y el error desaparecerá. Porque al tener los archivos codificados en UTF8 se agrega unos espacios antes del <?php

Recuerda pasar tambien los acentos y eso, para que funcionen en ANSI

Salu2

ZharkD

#8
Cita de: Mugiwara en 29 Marzo 2010, 03:11 AM
Si mal no me equivoco, el error se debe a que tengas el header.php o algun otro file como los de idiomas de tu pagina codificado en UTF-8?

Pon los archivos en ANSI y el error desaparecerá. Porque al tener los archivos codificados en UTF8 se agrega unos espacios antes del <?php

Recuerda pasar tambien los acentos y eso, para que funcionen en ANSI

Salu2
Hola, gracias por tu respuesta.

Pues tengo espacios antes y despues de " <?php " podrias explicarme mejor eso para dejar el estilo en UTF-8?
Como mencione, hace unos dias funcionaba sin probelma alguno, por eso me extraña XD

EDITO:
Código (html) [Seleccionar]
<meta http-equiv="Content-Type" content="text/html; charset=ANSI" />
y el problema persiste XD

LuffyFF

Tendrías que codificar los archivos en ANSI, y con eso seguro no tendrías más problemas.

Lo más seguro es que antes estaba en ANSI, y hayas codificado en UTF8 sin querer, o tal vez con algún editor que guarde por defecto en UTF8. O tal vez haya habido un cambio en el servidor de PHP.

Al codificar en UTF8, se agrega unos caracteres antes de lo que ves para indicar que está en UTF8.

Entonces con UTF8 seria una especie de " <?php" en vez de "<?php", y entonces el espacio se mostraría como HTML como un espacio en blanco o salto de línea.

Tambien borra los espacios antes de "<?php", porque sino tambien se ejecutaria como HTML lo que haya antes del tag del php

Citar<meta http-equiv="Content-Type" content="text/html charset=ANSI" />
No es cuestion de mostrar la pagina HTML en ANSI. Sino encodear los archivos php en ANSI. Lo haces desde el editor.

Pero como te digo, puedo estar equivocado, y puede que solamente tengas espacios adelante, por lo cual, con solo eliminar los espacios ya está.

Salu2