Erro: “Cannot modify header information – headers already sent” no PHP

Um dos erros mais comuns, que os programadores iniciantes sofrem é o “Warning: Cannot modify header information – headers already sent by…”. Não se preocupe, todo mundo passa por esse erro ao programar com PHP. Descubra abaixo como é fácil de resolver esse erro.

O motivo do erro “Cannot modify header information”

Antes, vamos a explicação do motivo desse erro acontecer na execução de algum script PHP. É bem provável ele deva ser o erro mais procurado no stack overflow.

O motivo desse warning no PHP é simples, pois funções que enviam ou modificam o cabeçalho da requisição, devem ser chamados antes de o php emitir qualquer output.

As funções que devem ser chamadas antes de qualquer output são:

  • header() / header_remove()
  • session_start / session_regenerate_id()
  • setcookie() / setrawcookie()

Exemplos que irão exibir o erro

Caso você precisa fazer algum redirect, utilizando o header() e logo após tentar escrever algo na página, irá fazer o erro aparecer.

<?php

header("Location: http://www.dicasdephp.com.br/");

echo "Executando o redirect...";

Se você executar o exemplo acima, terá o erro “Cannot modify header information” exibindo na tela.

Como evitar o problema

Antes de mais nada, esse erro pode ser iniciado por problema bem simples, mas que irá fazer você perder muitas horas de trabalho até achar.

Um simples espaço em branco antes de um arquivo <?php, poderá ocasionar o problema.

Também, outro detalhe simples, é na hora de encerrar um arquivo com o ?>, e acabar deixando um espaço ou nova linha em branco no final do arquivo.

Por isso, diversos frameworks, não usam o ?> para encerrar os arquivos.

Dicas para para ajudar a não ter esse erro

  • Procurar por espaço/Tab/enter antes de abrir tag PHP e depois de fechar
  • Quando utilizar arquivos em UTF8, certificar-se de estar usando o UTF8 sem BOM

Caso esse post não tenha lhe ajudado, vamos ao stack overflow, pois lá tem um link com explicação completa do erro.

String Length: Descubra o tamanho de uma string com strlen

Está procurando sobre string length? Então, você está no lugar certo. Neste artigo vou falar um pouco sobre como descobrir o tamanho de um string no PHP utilizando a função strlen.

Definição da função strlen

strlen ( $string )

A função strlen irá retornar o total de caracteres, incluindo espaços, que existem no parâmetro de entrada.

Essa função é muito utilizada para comparação de tamanhos ou verificar se foi passado algum valor para um determinado parâmetro.

Veja os exemplos abaixo de string length com strlen

No exemplo abaixo vamos utilizar a função strlen para verificar se o parâmetro existe ou foi definido.

if(strlen($input) == 0)
      die('A variável $input não pode ser vazia');

No próximo exemplo, vamos retornar o tamanho total da string inserida na função strlen.

echo strlen('Qual o tamanho dessa string?'); // irá retornar o inteiro 28

Substr PHP: 3 dicas de como utilizar essa função

Está procurando sobre substr php? Então, você está no lugar certo. Neste artigo vou falar um pouco sobre o que como utilizar substr no PHP.

A função substr é responsável por retornar um pedaço de uma string, conforme parâmetros desejados.

string substr ( $string , $inicio, $tamanho )

Para começar, precisamos entender o funcionamento da função, que é presente em diversas linguagens de programação, como javascript, C, java e outras.

O primeiro parâmetro é a string que desejamos cortar e pegar somente um trecho. O segundo parâmetro é a partir de qual caracter dessa string, vamos retornar. E o terceiro, é o tamanho máximo a retornar a partir da definição de inicio.

Assim, vamos aos exemplos de uso abaixo.

Retornar os 5 últimos caracteres com substr php

Para retornar os últimos 5 caracteres de uma palavra, vamos definir conforme o exemplo abaixo:

$string = 'Paralelepípedo';

echo substr($string, -5)

// retorno será "ípedo";

Lembre-se, é possível usar o número negativo no parâmetro que irá contar o inicio do corte da string, assim irá contar do final para o inicio da string.

Retornar os 3 primeiros caracteres

Digamos que queremos retornar apenas os 3 primeiros caracteres, por exemplo, dos meses do ano. Veja o exemplo abaixo:

$mes = 'Janeiro';

echo substr($mes, 3);

// retorno será 'Jan';

Retornando a partir do 3 caracter, limitado a 5

Agora vamos utilizar a função substr do php para retornar a partir de um determinado caracter, mas com limitador de tamanho da string.

$exemplo = 'Descrição de um evento';

echo substr($exemplo, 3, 5);

// retorno será 'criçã';

Combinando o uso de substr com strpos

A função strpos, que é responsavél por trazer posição que uma setença acontece dentro de um texto, pode ser combinada com a substr para retornar somente determinado conteúdo.

No exemplo abaixo, queremos retornar apenas o dominio do e-mail, removendo o identificado do usuário.

$email = '[email protected]';

echo substr($email, strpos($email, "@")); 

// irá retornar @dicasdephp.com.br
1 Star2 Stars3 Stars4 Stars5 Stars (33 votos, média: 4,61 de 5)
Loading...

Composer: Usando pacotes no PHP

Caso o Composer ainda seja novo para você, esse post vai mostrar o que é, como instalar e usar para começar seus estudos.

Ele é uma ferramenta para gerenciamento de dependências para o PHP que vem ganhando muito espaço entre o desenvolvedores e tornando indispensável.

Com poucos comandos é possível definir todos as bibliotecas necessárias para o seu projeto. Ele ficará responsável por baixar e gerenciar todos os pacotes e configurar seu arquivo de autoloader.

Composer: Pacotes em PHP

O conceito

O conceito é que ele permite que você declare as bibliotecas de seu projeto, e que assim ele irá assumir o gerenciamento (instalação/atualização)-los para você.

Com isso, a instalação e atualização de novas bibliotecas ficará muitoooo mais fácil. Com alguns comandos no terminal, no caso de Linux e OS x, você manterá o projeto atualizado com as dependências.

Para quem já tem experiência com Linux, irá lembrar muito os comandos de “apt-get” dos sistemas Debian/Ubuntu.

Instalando o Composer

Para iniciar, você precisa realizar o download do arquivo phar. Para quem não conhece o phar, ele é um empacotamento de aplicações, de forma que você não precisa ser preocupar com estrutura. Você pode simplesmente baixar e sair usando em qualquer sistema.

Podemos baixar de duas formas distintas: cURL ou próprio PHP.

Download do Composer via cURL

Execute o seguinte comando em seu terminal:

curl -sS https://getcomposer.org/installer | php

Download do Composer via PHP

Execute o seguinte comando em seu terminal:

php -r “readfile(‘https://getcomposer.org/installer’);” | php

Existem outras maneiras de fazer a instalação. Caso prefira, poderá consultar a documentação para verificar a instalação.

Para sair usando, é necessário entender como ele funciona. Deve ter notado diversos frameworks no mercado que ao realizar o download, já vem com o arquivo “composer.json”. Lembre-se, é possível usar em qualquer projeto, pois ele irá auxiliar no controle das dependências do projeto.

Definindo o uso global

Recomendo que você consulte a documentação para verificar como é o funcionamento global. No caso do OS x, necessário mover o composer.phar para o /usr/local/bin/composer.

mv composer.phar /usr/local/bin/composer

Após esse comando é só sair executando pelo terminar. É possível que em determinados projetos tenha problema de permissão, para isso, execute o comando usando o sudo.

Iniciando um projeto PHP com Composer

Depois da instalação feita, é hora de criamos o primeiro projeto. Para iniciar, vamos ao arquivo de configuração.

Lembre-se de criar uma pasta dentro de seu webserver, e nela criar o arquivo de configuração. Poderá usar o modelo abaixo:

{
 "name": "Dicas de PHP",
 "description": "Primeiro projeto via Composer",
 "authors": [
 {
 "name": "Fausto Schneider",
 "email": "[email protected]"
 }
 ],
 "require": {
 "php": ">=5.4.0"
 }
}

Acho que o próprio esqueleto é auto explicativo, mas segue abaixo detalhes do que você precisa preencher:

  • name: Nome do projeto (recomendável, mas não obrigatório);
  • description: Detalhamento do projeto (não obrigatório);
  • authors: Dê os créditos para quem contribuir com o projeto;
  • require: Informe quais são as necessidade do projeto. Nesse caso, obrigamos que seja necessário usar a versão 5.6 ou superior. Se a instalação falhar irá retornar um erro na hora da configuração do projeto;

Adicionando pacotes

Bem, a parte mais divertida é gerenciar os pacotes. Para saber o que adicionar ao seu pacote, poderá usar o Packagist, onde qualquer desenvolvedor pode inserir suas bibliotecas.

Para esse exemplo, vamos usar a biblioteca proem, para criação de rápido MVC. Veja abaixo nosso composer.json:

{
 "name": "Dicas de PHP",
 "description": "Primeiro projeto via Composer",
 "authors": [
 {
 "name": "Fausto Schneider",
 "email": "[email protected]"
 }
 ],
 "require": {
 "php": ">=5.4.0",
 "proem/proem" : "0.7.1"
 }
}

Executando o Composer

Agora, com nosso arquivo de configuração definido, é só executar o comando de instalação:

composer install

Ao verificar sua pasta novamente, notará que existem novos arquivos e pastas. Será criada uma pastar “vendor” e criado o arquivo “composer.lock” que é gerador após a instalação realizada com sucesso.

O último passo é criar um arquivo “index.php” e inserir o seu “autoload”. Veja nosso arquivo exemplo abaixo.

<?php

require 'vendor/autoload.php';

Se curtiu esse breve tutorial, deixe um comentário. Podemos fazer novo tutorial abordando mais detalhes.

PHP Code Standards: Seguindo padrões com PHP

Quer saber mais sobre como melhorar a padronização de projetos com PHP? O guia “PHP Code Standards” é uma ótima referência para o desenvolvimento dos seus projetos, seguindo uma padronização de código.

Trabalho em equipe com PHP Code Standards

O trabalho em equipe compreende que devem ser considerados os elementos padrão de codificação necessários para assegurar um elevado nível de legibilidade entre o código PHP compartilhado entre vários desenvolvedores.

Simplicidade e clareza alcançada por codificação consistente poupa a equipe de erros comuns.

Facilidade na Manutenção do código

Se você precisar revisar um trecho de código em algum momento, será fácil entender sua lógica e objetivo. Por esse motivo, toda a equipe deve ser um guia padronizado no desenvolvimento do projeto.

É comum projetos começarem sem uma padronização e em determinado momento, trechos de códigos serem refeitos, por ser mais econômico reescrever do que realizar manutenção.

Nomenclatura de Classes, funções, arquivos, tudo!

Tudo no código deve seguir uma padronização. Procure estabelecer como será o padrão de nomes das variáveis, dos métodos, das classes, dos arquivos, padrão de escrita do arquivo, UTF-8 sem BOM, métodos em português ou inglês… tudo deve ser definido antes de iniciar o projeto.

Referências

Separamos uma lista com links de referências para você estudar mais sobre PHP Code Standards.

Antes de iniciar um projeto usando algum framework open-source, pesquise se ele não disponibiliza um documento de code standards. Frameworks e plataformas como CodeIgniter, Zend, Magento e WordPress tem os próprios guias de estilo.

Download PHP Code Standards PDF

No PDF para download você terá um guia para escrever um código organizado, bem estruturado e documentado. Melhorando visibilidade e facilitando futuras manutenções e implementações.

Download PDF

Dúvidas? Deixe um comentário!