Restringindo Acesso Apenas a Smartphones com PHP

Em alguns cenários, você pode querer que um sistema só seja acessado via smartphone. Pode ser um painel interno de app, um portal cativo, um controle remoto de IoT ou apenas uma frescura sua — e tá tudo bem. Abaixo, mostro como fazer isso com PHP puro, sem firulas.

Detectando Smartphones com PHP

A técnica consiste em verificar o User-Agent do navegador, que traz informações sobre o dispositivo que está acessando. Apesar de não ser à prova de balas (o agente pode ser forjado), ela é suficiente para 99% dos casos onde você só precisa barrar o curioso médio.

<?php
function isMobile() {
    return preg_match('/(android|iphone|ipad|ipod|blackberry|windows phone|opera mini|mobile)/i', $_SERVER['HTTP_USER_AGENT']);
}

Essa função vai retornar true se o agente identificado for um dispositivo móvel.

Redirecionando Usuários Não-Mobile

A ideia aqui é simples: se não for mobile, redireciona para uma página de erro. Pode ser uma página HTML, um JSON de API, ou só uma mensagem na tela.

<?php
if (!isMobile()) {
    header("Location: erro.html");
    exit;
}

Ou, se quiser fazer bonito e mandar um HTTP 403 (Proibido):

<?php
if (!isMobile()) {
    http_response_code(403);
    exit('Acesso permitido somente via smartphone.');
}

Exceção para Testes Locais

Durante o desenvolvimento, você provavelmente vai acessar a aplicação pelo navegador do seu PC. Para facilitar sua vida, adicione um bypass:

<?php
if (!isMobile() && !isset($_GET['debug'])) {
    http_response_code(403);
    exit('Acesso permitido somente via smartphone.');
}

Assim, você pode acessar a URL com ?debug no final para testar normalmente.

Quando Usar Esse Tipo de Restrição

  • Sistemas que dependem de recursos mobile, como câmera, geolocalização ou push notifications;
  • Portais cativos onde a experiência precisa ser controlada (ex: redirecionamento Wi-Fi);
  • Aplicações feitas especificamente para o uso em PWA ou WebApp Standalone;
  • Projetos internos onde o layout só faz sentido em telas pequenas.

Considerações Finais

Essa abordagem é rápida e funcional, mas se você quiser algo mais robusto, pode usar bibliotecas como Mobile_Detect que fazem uma detecção bem mais precisa.

Ainda assim, na maioria dos casos, esse regex simples resolve com tranquilidade.

Se o acesso for muito crítico, combine essa estratégia com autenticação, tokens e logging — bloquear por User-Agent é só a primeira camada.

Rolar para cima