Solicitar variáveis ​​no nível de raça do Konsolidate

(presumimos que uma instância Konsolidate de trabalho esteja em $ K)

Existem algumas maneiras de trabalhar com o objeto de solicitação de raça
dada a solicitação GET: http://example.com/request.php?foo=bar

A abordagem implícita, apenas perguntando a própria solicitação, que determinará o tipo de solicitação apropriado (GET neste caso) e procurará a variável

$foo = $K->get('/Request/foo');

A abordagem explícita, pedindo ao Request para obter a variável do módulo GET RequestType

$foo = $K->get('/Request/GET/foo');

É o mesmo que a notação de destroços do trem, caso você prefira:

$foo = $K->Request->GET->foo;

Substitua GET pelo tipo de solicitação desejado

POSTAR:

$foo = $K->get('/Request/POST/foo');

EXCLUIR:

$foo = $K->get('/Request/DELETE/foo');

COLOCAR:

$foo = $K->get('/Request/PUT/foo');

Observe que todos os tipos de solicitação diferentes de GET sempre também criarão o tipo GET, que captura as variáveis ​​adicionadas à string de consulta

Combinando tipos de solicitação
Imagine uma solicitação POST que posta ‘foo = bar’, mas também tem ‘foo = baz’ na string de consulta do URL:

por exemplo: curl -X POST --data "foo=bar" "http://example.com/request.php?foo=baz"

$foo = $K->get('/Request/foo');

retorna ‘bar’, pois a variável é lida do buffer POST (pois este é o tipo de solicitação real)

$foo = $K->get('/Request/GET/foo');

retorna ‘baz’, pois a variável é lida explicitamente do buffer GET

$foo = $K->get('/Request/POST/foo');

retorna ‘bar’, já que a variável é lida explicitamente do buffer POST

Solicitações adulteradas O
PHP tem algumas peculiaridades em como processa variáveis ​​de solicitação

Injeção de byte NULL: Se um nome de variável contém um byte NULL, apenas a parte do nome até o byte NULL é usada.
Este comportamento é usado por visitantes maliciosos para enganar os aplicativos

por exemplo: curl -X POST --data "foo%00led=bar" "http://example.com/request.php?foo=baz"

A solicitação de raça tentará (!) Proteger contra este vetor de ataque

$foo = $K->get('/Request/foo');

retorna falso, pois a variável é lida do buffer POST, mas não pode ser confiável

$foo = $K->get('/Request/GET/foo');

retorna ‘baz’, pois a variável é lida explicitamente do buffer GET

$foo = $K->get('/Request/POST/foo');

retorna falso, pois a variável é lida explicitamente do buffer POST, mas não pode ser confiável

Como você pode ver, a Solicitação de raça não fornecerá o valor de ‘foo’ (nem ‘foo% 00led’, que não seria conhecido pelo PHP de qualquer maneira, a menos que você estivesse usando um POST com "Content-type: multipart/form-data", então a variável SERÁ conhecida)foo%00led