Entendendo as Superglobais do PHP: A Variável $_REQUEST
Aprenda como a variável $_REQUEST do PHP combina dados de $_GET, $_POST e $_COOKIE, com exemplos práticos e boas práticas de segurança.
A linguagem PHP possui muitas variáveis integradas, chamadas de superglobais, que fornecem uma maneira conveniente de acessar dados de diversas fontes em seus scripts. Uma das superglobais mais utilizadas é a variável $_REQUEST, que combina os valores das variáveis $_GET, $_POST e $_COOKIE em um único array.
Neste artigo, vamos nos aprofundar na variável $_REQUEST, explorando suas propriedades, casos de uso e boas práticas para trabalhar com ela em seus scripts PHP.
O que é a Variável $_REQUEST?
A variável $_REQUEST é uma superglobal do PHP — um array associativo automaticamente disponível em todos os escopos do seu script. Ela contém dados enviados ao servidor por diversos meios, como requisições GET e POST, ou cookies. Ela combina os dados das variáveis $_GET, $_POST e $_COOKIE em um único array.
A ordem em que essas fontes são mescladas é controlada pelas diretivas request_order e variables_order no php.ini. Isso é importante porque, se a mesma chave existir em mais de uma fonte, a última fonte listada em request_order prevalece. O padrão na maioria das instalações modernas é GP (GET, depois POST), o que significa que os valores POST sobrescrevem os valores GET com o mesmo nome, e os cookies não são incluídos:
; php.ini
request_order = "GP" ; only $_GET and $_POST feed $_REQUESTComo esse comportamento depende da configuração do servidor, nunca presuma que $_REQUEST contém dados de cookies sem verificar a configuração de request_order.
Quando Usar a Variável $_REQUEST
A variável $_REQUEST é útil quando você deseja acessar dados enviados pelo cliente, independentemente do método utilizado. Por exemplo, se você quiser processar um formulário enviado pelo usuário, pode usar a variável $_REQUEST para acessar os valores enviados no formulário, sem precisar saber se ele foi submetido pelo método GET ou POST.
Embora $_REQUEST possa incluir dados de cookies, é prática padrão acessar os cookies diretamente via $_COOKIE para maior clareza e segurança.
Como Acessar Dados na Variável $_REQUEST
Para acessar os dados na variável $_REQUEST, basta usar a notação de array, fornecendo a chave que corresponde ao valor que você deseja recuperar. Por exemplo, se você tiver um formulário com um campo de texto chamado "username", pode acessar o valor enviado no campo da seguinte forma:
Exemplo básico de leitura de um valor
$username = $_REQUEST['username'];
// Always validate and sanitize input before useComo uma chave pode estar ausente (por exemplo, no primeiro carregamento da página antes de um formulário ser enviado), verifique primeiro se ela existe. O operador de coalescência nula (??) é a maneira mais limpa de fornecer um valor padrão:
$username = $_REQUEST['username'] ?? 'guest';
echo "Hello, " . htmlspecialchars($username);Se você esquecer a verificação de existência e a chave estiver ausente, o PHP emite um aviso Undefined array key — portanto, sempre proteja suas leituras.
Um exemplo completo de formulário
O real valor de $_REQUEST é que o mesmo manipulador funciona independentemente de o formulário usar method="get" ou method="post". O exemplo abaixo renderiza um formulário e processa sua entrada independentemente do método:
<?php
// handler.php
if (isset($_REQUEST['name'])) {
// Never trust raw input — escape it before output
$name = htmlspecialchars(trim($_REQUEST['name']));
echo "Welcome, {$name}!";
}
?>
<form method="post" action="handler.php">
<input type="text" name="name" placeholder="Your name">
<button type="submit">Submit</button>
</form>Troque method="post" por method="get" e o código PHP não muda — essa é precisamente a conveniência que $_REQUEST oferece.
$_REQUEST vs $_GET vs $_POST
| Superglobal | Fonte de dados | Use quando |
|---|---|---|
$_GET | String de consulta da URL (?key=value) | Você sabe que os dados chegam via URL (links, pesquisa). |
$_POST | Corpo da requisição HTTP | Você processa envios de formulários, uploads ou ações que alteram estado. |
$_REQUEST | $_GET + $_POST (+ $_COOKIE, conforme configuração) | O método é genuinamente desconhecido e você deve aceitar qualquer um. |
Para mais informações sobre os arrays dedicados, consulte os capítulos $_GET e $_POST, e tratamento de formulários PHP para exemplos completos.
Boas Práticas para Trabalhar com a Variável $_REQUEST
Ao trabalhar com a variável $_REQUEST, é importante seguir algumas boas práticas para garantir que seus scripts sejam seguros e confiáveis. Algumas das boas práticas para trabalhar com a variável $_REQUEST incluem:
- Valide e sanitize todos os dados recebidos do cliente para garantir que sejam seguros para uso em seus scripts.
- Prefira superglobais específicas como
$_GETou$_POSTquando o método de requisição é conhecido, pois$_REQUESTé geralmente desencorajado no PHP moderno devido à potencial poluição de parâmetros e ambiguidade. - Evite usar a variável
$_REQUESTao manipular dados sensíveis, como senhas ou outras informações confidenciais, para prevenir riscos de segurança. - Use as funções de filtro do PHP (por exemplo,
filter_input()oufilter_var()) para validar e sanitizar entradas de forma estruturada e reutilizável. - Para cookies, leia
$_COOKIEdiretamente; para dados de sessão use$_SESSION— nenhum deles pertence a caminhos de código sujeitos à poluição de requisições.
Conclusão
A variável $_REQUEST fornece uma maneira unificada de acessar dados do cliente independentemente do método de envio. Ao entender suas dependências de configuração, possíveis ambiguidades e boas práticas de segurança, você pode usá-la efetivamente em seus scripts PHP. Embora o desenvolvimento moderno frequentemente favoreça o uso explícito de $_GET ou $_POST, $_REQUEST continua sendo uma ferramenta útil para lidar com fontes de entrada mistas quando configurada corretamente.