Como mostrar ao usuário que seu site está em manutenção

Postado por: Pedro Rogério em

Por diversas vezes já tive que efetuar manutenção em sites, e quem faz isso frequentemente sabe que pode ocorrer vários problemas, um deles é de o site ficar todo desconfigurado no momento em que você está alí efetuando alterações. Mas que tal seria se pudesse-mos colocar uma mensagem de que o site está em manutenção no momento e logo voltará ao ar para evitar esse tipo de problema? Com PHP achei uma maneira bem simples de fazer isso. Observem o seguinte script:


<?php
$manutencao = 1;
$ip = '200.16.20.82';

if ( $manutencao )
{
    if ( $_SERVER['REMOTE_ADDR'] != $ip )
       die('Site em manutenção, voltaremos em instantes');
}
?>

Onde foi citado $ip = ‘200.16.20.82′; é onde você deve colocar seu IP, com isso, só você terá acesso ao conteúdo do site e, para os demais usuários aparecerá a mensagem de que o site está em manutenção. Caso queira voltar o site ao normal é só alterar aqui $manutencao = 1; para 0, ficaria assim: $manutencao = 0;. Pronto, tudo volta ao normal.

<update 17/09/2007>

Caso você queira liberar o acesso para mais IPs, deve utilizar o seguinte código:


<?php
$manutencao = 1;
$ip = array('200.16.20.82', '200.16.20.83');

if ( $manutencao ){
	$verificador = 0;
	for($i = 0; $i < sizeof($ip); $i++){
		if($_SERVER['REMOTE_ADDR'] == $ip[$i]) $verificador++;
	}
	if($verificador == 0) die('Site em manutenção, voltaremos em instantes');
}
?>

Basta você ir colocando os IPs na 3ª linha, separados por vírgula. O código acima é de autoria de meu amigo aqui da empresa, o Márcio, portanto, todos os créditos a ele.

</update>

<update 20/09/2007>

Nosso amigo DGMike postou aqui no blog uma solução bem mais enxuta, então, fica abaixo a dica:


<?php
$manutencao = true;
$ip=$_SERVER['REMOTE_ADDR'];
$ips = array('200.16.20.82', '200.16.20.83');
if ( ($manutencao) && (!in_array ($ip, $ips)) ) {
    die ('Site em manutenção, voltaremos em instantes');
}
?>

</update>

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Random Posts

Sobre Pedro Rogério

Pedro Rogério é desenvolvedor web por paixão, não saberia fazer melhor outra coisa. Além de escrever para o Pinceladas da Web também escreve para o CSS no Lanche, blog voltado ao desenvolvimento front-end.

25 Responses to “Como mostrar ao usuário que seu site está em manutenção”

  1. Opa! Muito útil esse aí Pedro! Vou usar semana que vem, tenho que modificar umas coisas num site, e vou experimentar isso aí.

    Att
    Abraços!

  2. Uma dica muito boa que sem duvidas irá ajudar muitos webmasters!!!! Parabéns pela iniciativa…

  3. deve dar para fazer algo assim via htaccess
    com a vantagem de ser uma solução mais portavel
    pois independe de como se lida com seus includes ou mesmo de qual linguagem se usa

  4. Tem que criar uma página e colocar esse código.. Não entendi bem o funcionamento desse sistema..

  5. @Gata,

    Se você utiliza PHP, é só colocar esse código no index.php que já funciona!!!

  6. Leonardo L Procópio

    show de bola brother!
    Grande abraço!

  7. Olá!
    Valeu o toque.. Comecei a acompanhar seu blog a pouco tempo, pelo interesse em CSS.
    E até agora acho um dos melhores feitos sobre. Dá várias dicas, curiosidades de forma simples, sucinta.. Tá de parabéns! :D

    Mas assim, neste código, tem como eu colocar mais de um IP para poder ver a página em manutenção? Pois as vezes utilizo mais de um PC para fazer um website..

    Grande abraço!

  8. @ Lucas,

    Respondi a sua dúvida no post, adicionei mais um código que faz o que você quer!! Abraços e obrigado pelos elogios.

  9. Para programadores mais experientes o último código poderia ser escito desta maneira…

    Explico… primeiro, guardamos o ip em uma variável para nosso código ficar mais limpo, depois verificamos se este array existe com a fuunção in_array (verifique a documentação para mais detalhes em http://www.php.net ), mas como queremos que o ip não esteja nesta lista, usamos uma exclamação (!) antes desta verificação.
    É a mesma coisa, só que com um código mais enxuto, mais limpo, sem for ou loops…
    Recomendo para quem está começando ter curiosidadee de ver a documentação do PHP, ela não é dificil de entender como muitas documentações por aí.
    e, Pedro, parabéns pela iniciativa. :)

  10. Para programadores mais experientes o último código poderia ser escito desta maneira…
    < ?php
    $manutencao = true;
    $ip=$_SERVER['REMOTE_ADDR'];
    $ips = array(‘200.16.20.82′, ‘200.16.20.83′);
    if ( ($manutencao) && (!in_array ($ip, $ips)) ) {
    die (‘Site em manutenção, voltaremos em instantes’);
    }
    ? >

    Explico… primeiro, guardamos o ip em uma variável para nosso código ficar mais limpo, depois verificamos se este array existe com a fuunção in_array (verifique a documentação para mais detalhes em http://www.php.net ), mas como queremos que o ip não esteja nesta lista, usamos uma exclamação (!) antes desta verificação.
    É a mesma coisa, só que com um código mais enxuto, mais limpo, sem for ou loops…
    Recomendo para quem está começando ter curiosidadee de ver a documentação do PHP, ela não é dificil de entender como muitas documentações por aí.
    e, Pedro, parabéns pela iniciativa. :)

  11. Caralho!!!!!!!!!!!!!!! Essa é para o DGmike!!!

    Meo você salvou a minha vida, eu que escrevi o primeiro código, porém nem conhecia a função in_array()… Cara sempre usei um for para resolver problemas desse tipo, porém com essa função é muito mais foda!!!!

    Valeu pelo toque…

    É isso ai Pedro, seu blog é o melhor!!!!!!!!!!!!!!!!!

    Falou!!!

  12. Eu faço esse mesmo esquema, mas pra ficar uma coisa mais personalizada faço uma página em html separada. Por ex:

    if(true)
    {
    require(‘em_manutencao.html’);
    exit;
    }

  13. Legal a dica, mas as vezes você está em computador que usa IP Dinâmico, e ai? Para resolver esse problema usei uma sessão. Claro que no meu caso eu tenho uma página de login…

  14. Se desejar bloquear temporariamente o acesso de TODOS os arquivos de uma pasta para fazer a atualização use htaccess dessa maneira:

    Redirect /pasta/ http://site.com.br/manutencao/manutencao.html

    crie uma pasta manutenção e dentro um arquivo manutencao.html contendo o texto de aviso…

    Ou para bloquear acesso a index, faça assim:

    Redirect /index.php http://site.com.br/manutencao/manutencao.html

    Abraços…

  15. www.acquamovel.com.br

    …..Eu jairo antonio Batista…..registrei dominio mensionado acima….mas gostaria de montar uma pagina para este dominio mensionado…..Tal pagina é relativo a trabalho profissional……Quero mostrar o meu trabalho via internet,mas não sei como montar um site……estou precisando de mecanismo para tal….caso alguém ,ou empresa,,possa fazer isto,estou disposto a pagar pelo trabalho……veja o que faço na pagina do orkut….em…aquamovel……veja as fotos e netenderá o que preciso…… agradecimentos carinhosamente……….

  16. Muito boa essas dicas, eu costumo usar o .htaccess, somente descomento as duas linhas abaixo e adiciono meu ip.

    #RewriteCond %{REMOTE_HOST} !^111\.222\.333\.444$
    #RewriteRule (.*) admin/manutencao.php [L]

    É bom adicionar um status “503 Service Unavailable” na página manutencao.php para evitar do googlebot indexar o site com o conteúdo da página de manutenção.

  17. Olá!
    Eu criei um jogo esses dias,
    e estou com vários membros no meu site.

    Isso é muito bom, claro, mas, quando eu faço algumas manutenções,
    o site fica todo desconfigurado.

    Tentei fazer a dica no index.htm e não consegui. :/
    Botei este code no final da página,
    e para o teste, não mudou nada.
    Usuários meus continuam a conseguir visualizar.

    Bom, aguardo respostas.

  18. tem um site queria saber eu mesmofazer manutenção qual é procedimento p/ trasferença de foto e texto.grato

  19. tem um site queria saber eu mesmo fazer manutenção qual é procedimento p/ trasferencia de foto e texto.grato

  20. Realmente muito bom, mesmo! Ainda testarei esse código pra ver se funciona mesmo.

  21. Bruno

    O melhor é usar .htaccess!

  22. tenho uma pergunta , onde coloco esse javascript?

Leave a Reply