Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

2100928

[Resolvido] php erro 

Mensagens Recomendadas

2100928    0
2100928

Bom dia colegas,

Preciso de uma ajudinha, nunca tal coisa me tinha acontecido e já pesquisei mas não encontro grande informação.

Estou a criar uma página e nos locais em que coloco código php (para já são apenas includes), no html visualiza-se uma espaço em branco.

Através do chrome, tento visualizar o código e no local exacto do código php, aparece isto "" (Que é o código para espaço em branco)

Alguém faz ideia do que possa ser?

Como não sei se é importante, deixo a informação que estou a trabalhar localmente com o xampp.

Notas:

O espaço em branco não é a página á qual estou a fazer o include ;)

http://stackoverflow.com/questions/9691771/why-is-65279-appearing-in-my-html --> Não resultou

Obrigado

Editado por 2100928

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
capesone    3
capesone

abre todos os ficheiros num editor e com a ferramenta de pesquisa procura por 

Ele não aparece ai por magia,

Em que ide estás a trabalhar, se for no bloco de notas do windows, ve a resposta desse utilizador do stackoverflow

To conclude, and specify the solution:

Windows Notepad adds the BOM character (the 3 bytes: EF BB BF) to files saved with utf-8 encoding.

PHP doesn't seem to be bothered by it - unless you include one php file into another - then things get messy and strings gets displayed with character(65279) prepended to them.

You can edit the file with another text editor such as Notepad++ and use the encoding

"Encode in UTF-8 without BOM",

and this seems to fix the problem.

Also, you can save the other php file with ANSI encoding in notepad - and this also seem to work (that is, in case you actually don't use any extended characters in the file, I guess...)

Se o erro for mesmo do bloco de notas, arranja um bom ide para trabalhares. eu uso o Aptana Studio 3, mas procura um ao qual te adaptes melhor

Se não for nada disso, tenta por aqui o código onde o erro ocorre!

Editado por capesone

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2100928    0
2100928

Boas...

Já procurei por todo o lado e não há qualquer existencia de tal código...

Uso o TextWrangler (equivalente ao notepad++, mas para MAC)

O código do index

<?php include 'change_language.php' ?>
<?php
if(isset($_GET['page'])){
$page = $_GET['page'];
}
?>
<html lang="<?php echo $_['lang'] ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>YESols :: <?php echo $_['title'] ?></title>

<!--META-->
<meta name="description" content="descrição">
<meta name="keywords" content="palavras chave">
<meta name="author" content="André Almeida">
<meta name="copyright" content="André Almeida">
<meta name="robots" content="ALL">
<link rel="icon" type="image/png" href="img/iconyes.png">

<!-- CSS FILES -->
<link rel="stylesheet" href="estilos/estruturabase.css">
<link rel="stylesheet" href="estilos/estruturamenus.css">
<link rel="stylesheet" href="estilos/estruturabootstrap.css">
<link rel="stylesheet" href="fonts/font-awesome-4.3.0/css/font-awesome.css">

<!-- JS FILES-->
<script type="text/javascript" src="js/bootstrap.min_3.3.4.js"></script>
<script type="text/javascript" src="js/jquery_1.11.2.js"></script>
<style type="text/css">
.bodyFFF{
background-image: url('img/bgfff.jpg');
background-repeat: repeat;
height: 230px;
width: 100%;
position: absolute;
}

@media (max-width:992px){
.bodyFFF{
height: 290px;
width: 100%;
position: absolute;
}
}
</style>
<script type="text/javascript">
//Add Hover effect to menus
jQuery('ul.nav li.dropdown').hover(function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn();
}, function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut();
});
</script>
</head>
<body class="body">
<div class="bodyFFF"></div>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column text-left">
<div class="row contentorTopo" style="width:100%">
<?php include 'includes/language_currency.php' ?>
</div>
<div class="row topconteudo style="width:100%"">
<?php include 'includes/top.php' ?>
</div>
<div class="row banner style="width:100%"">
<?php
include 'includes/nav.php';
?>
<?php
switch($page){
case "cat";
include 'includes/bannerCategoria.php';
break;
case "scat";
include 'includes/bannerSubCategoria.php';
break;
case "prod";
include 'includes/bannerproduct.php';
break;
default: include 'includes/bannerhome.php';
}
?>
</div>
<div class="row conteudo" style="width:80%">
<div class="row clearfix conteudos">
<div class="col-md-12 column">
<div id="content_wrapper">
<div id="content">
<?php
switch($page){
case "cat";
include 'includes/category.php';
break;
case "scat";
include 'includes/subcategory.php';
break;
case "prod";
include 'includes/product.php';
break;
default: include 'includes/inicio.php';
}
?>
</div>
</div>
</div>
</div>
</div>
<div class="row rodape" style="width:100%">
<?php include 'includes/rodape.php'?>
</div>
</div>
</div>
</div>
</body>
</html>

Editado por 2100928
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo

primeiro de tudo, o problema é mesmo o BOM odo UTF-8, se não sabes como tirar o BOm terás de esperar por alguem do fórum que saiba ou pesquisa na net.

segundo, para a próxima, apresenta uma imagem do código apresentado anteriormente

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2100928    0
2100928

Ainda não consegui resolver... tentei seguir á risca essas possibilidades mas ainda não encontrei a solução...

Se mais alguem tiver uma solução diferente é bem vinda :) ... assim que conseguir encontrar a solução partilho

obrigado pela vossa ajuda

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2100928    0
2100928

Bem o problema aparentemente está no inicio da index.php...

<?php include 'change_language.php' ?>
<?php
if(isset($_GET['page'])){
 $page = $_GET['page'];
 }
?>
<html lang="<?php echo $_['lang'] ?>">
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Se simplesmente, remover o código antes da tag <html> o problema desaparece...

Agora a questão é ... porque acontece isto?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knot    6
Knot

Não deverá ser por isto mas tenta assim:

<?php
include 'change_language.php'; //colocar aqui o ;

if(isset($_GET['page']))
{
  $page = $_GET['page'];
}
?>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2100928    0
2100928

como confirmaste que os ficheiro estão condificados como UTF-8 sem BOM ?

- Abri todos os ficheiros do projecto com o TextWrangler (Tipo Notepad++, mas para mac)

- Fui ao separador "File > Reopen Using Encoding > Unicode [uTF-8]" / Como sei que está sem BOM? Porque a outra opção existente é "Unicode [uTF-8, with BOM]

- Salvei

Não deverá ser por isto mas tenta assim:

<?php
include 'change_language.php'; //colocar aqui o ;

if(isset($_GET['page']))
{
  $page = $_GET['page'];
}
?>

Não resolveu!

O problema parece estar mesmo neste pedaço...

<?php include 'change_language.php'; ?>

Editado por 2100928

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knot    6
Knot

Tu ao fazeres o include do change_language.php estás a incluir o conteúdo desse ficheiro, ou seja poderá vir desse ficheiro o erro. Verifica o conteúdo e a codificação desse ficheiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2100928    0
2100928

Tu ao fazeres o include do change_language.php estás a incluir o conteúdo desse ficheiro, ou seja poderá vir desse ficheiro o erro. Verifica o conteúdo e a codificação desse ficheiro.

change_language.php

<?php
if(!isset($_COOKIE['lang'])) {
include 'language/english/en.php'; }
elseif ($_COOKIE['lang']=='en') {
include 'language/english/en.php'; }
elseif ($_COOKIE['lang']=='pt') {
include 'language/portuguese/pt.php'; }
elseif ($_COOKIE['lang']=='es') {
include 'language/spanish/es.php'; }
elseif ($_COOKIE['lang']=='fr') {
include 'language/french/fr.php'; }
elseif ($_COOKIE['lang']=='it') {
include 'language/italian/it.php'; }
?>

E em todos eles para já tenho o mesmo conteúdo, alterando só a variável $_['language']

<?php
//LANGUAGE = EN
$_['language']    = 'EN'; // VARIA AQUI CONFORME O IDIOMA: EN, PT, FR, ES, IT
$_['title']    = 'YES WE HAVE, YES  YOU  FOUND'; //TEASER
// TEXTOS FIXOS
$_['question_ajuda']  =	 'Need Help?';
$_['question_pesquisa'] =    'What are you looking for?';
$_['info_carrinho'] =	 'View my cart';
?>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo

Tu ao fazeres o include do change_language.php estás a incluir o conteúdo desse ficheiro, ou seja poderá vir desse ficheiro o erro. Verifica o conteúdo e a codificação desses ficheiros.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2100928    0
2100928

Bem, problema resolvido :)

Por muito ridículo que possa parecer...

Nos ficheiros en.php, pt.php, fr.php, it.php, es.php

tinha todas as linhas onde está a tradução com um ou mais tabs antes do '=', removi todos os tabs e espaços e o erro desapareceu...

$_['btn_pesquisa']='Search';

Obrigado a todos pela ajuda...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo

estás a dizer que espaços que ladeavam o sinal de igual nesses ficheiros eram o problema ?

continuo a dizer que o problema era que um ou todos esses ficheiros estavam na codificação UTF-8 com BOM que somente foi alterada ao ser feita alguma alteração no ficheiro sendo posteriormente feita a gravação do ficheiro em disco. isto porque é normal um editor não efectuar a gravação caso não existe realmente nenhuma alteração de conteúdos.

se tiveres disponibilidade e vontage de tirar as teimas, voltas a colocar espaços e tabulações a ladear os mesmo sinais de atribuição e verifica se os caracteres voltam a aparecer

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2100928    0
2100928

estás a dizer que espaços que ladeavam o sinal de igual nesses ficheiros eram o problema ?

continuo a dizer que o problema era que um ou todos esses ficheiros estavam na codificação UTF-8 com BOM que somente foi alterada ao ser feita alguma alteração no ficheiro sendo posteriormente feita a gravação do ficheiro em disco. isto porque é normal um editor não efectuar a gravação caso não existe realmente nenhuma alteração de conteúdos.

se tiveres disponibilidade e vontage de tirar as teimas, voltas a colocar espaços e tabulações a ladear os mesmo sinais de atribuição e verifica se os caracteres voltam a aparecer

Sim, tirei as temas porque realmente tinha muito mais lógica essa situação.

Efectivamente voltei a colocar os tabs e continuo sem qualquer problema.

O que significa e para concluir que o problema deverá ter sido realmente o UTF-8 com BOM.

Assim e para futura consulta dos nossos colegas fica a dica, depois de efectuarem a alteração da codificação pode não ser suficiente simplesmente guardar, devem efectuar uma qualquer alteração e guardar para conseguirem efectivamente deixar de visualizar o código "" (no meu caso removi tabulação e voltei a colocar depois)

A todos o meu obrigado ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.