Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Parte 4: Execução dos Testes 1
1. Primeiro com GET e GET (method="get" e 'REQUEST_METHOD')==='GET') nos dois arquivos (filtro.html e filtro.php)
A saída no Google Chrome do Debian é a seguinte:
filter_has_var: INPUT_SERVER campo REQUEST_METHOD corresponde
Array
(
[SCRIPT_NAME] => /filtro/filtro.php
[REQUEST_URI] => /filtro/filtro.php?usuario=teste&senha=123&botao=
[QUERY_STRING] => usuario=teste&senha=123&botao=
[REQUEST_METHOD] => GET
[SERVER_PROTOCOL] => HTTP/1.1
[GATEWAY_INTERFACE] => CGI/1.1
[REMOTE_PORT] => 57654
[SCRIPT_FILENAME] => /var/www/html/filtro/filtro.php
[SERVER_ADMIN] => [no address given]
[CONTEXT_DOCUMENT_ROOT] => /var/www/html
[CONTEXT_PREFIX] =>
[REQUEST_SCHEME] => http
[DOCUMENT_ROOT] => /var/www/html
[REMOTE_ADDR] => ::1
[SERVER_PORT] => 80
[SERVER_ADDR] => ::1
[SERVER_NAME] => localhost
[SERVER_SOFTWARE] => Apache
[SERVER_SIGNATURE] =>
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
[HTTP_ACCEPT_ENCODING] => gzip, deflate, br, zstd
[HTTP_REFERER] => http://localhost/filtro/filtro.html
[HTTP_SEC_FETCH_DEST] => document
[HTTP_SEC_FETCH_USER] => ?1
[HTTP_SEC_FETCH_MODE] => navigate
[HTTP_SEC_FETCH_SITE] => same-origin
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
[HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_SEC_CH_UA_PLATFORM] => "Linux"
[HTTP_SEC_CH_UA_MOBILE] => ?0
[HTTP_SEC_CH_UA] => "Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"
[HTTP_CONNECTION] => keep-alive
[HTTP_HOST] => localhost
[proxy-nokeepalive] => 1
[modHeadersAvailable] => true
[FCGI_ROLE] => RESPONDER
[PHP_SELF] => /filtro/filtro.php
)
var_dump(usuariopost)-corresponde: NULL
var_dump(usuarioget)-corresponde: string(5) "teste"
echo usuariopost-corresponde:
echo usuarioget-corresponde: teste
var_dump(usuariopost)-final: NULL
var_dump(usuarioget)-final: string(5) "teste"
print_r post:
print_r get: teste
No Google Chrome do Windows 10:
filter_has_var: INPUT_SERVER campo REQUEST_METHOD corresponde
Array
(
[HTTP_HOST] => localhost
[HTTP_CONNECTION] => keep-alive
[HTTP_SEC_CH_UA] => "Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"
[HTTP_SEC_CH_UA_MOBILE] => ?0
[HTTP_SEC_CH_UA_PLATFORM] => "Windows"
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
[HTTP_SEC_FETCH_SITE] => same-origin
[HTTP_SEC_FETCH_MODE] => navigate
[HTTP_SEC_FETCH_USER] => ?1
[HTTP_SEC_FETCH_DEST] => document
[HTTP_REFERER] => http://localhost/filtro/filtro.html
[HTTP_ACCEPT_ENCODING] => gzip, deflate, br, zstd
[HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
[HTTP_COOKIE] => _ga=GA1.1.1020396929.1712114652; _ga_40EGW0ERX5=GS1.1.1712355178.4.1.1712355626.0.0.0
[PATH] => C:Program FilesCommon FilesOracleJavajavapath;C:Program Files (x86)Common FilesOracleJavajavapath;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:WindowsSystem32OpenSSH;C:Program FilesPuTTY;C:Program FilesPostgreSQL16in;C:php;C:Windowssystem32configsystemprofileAppDataLocalMicrosoftWindowsApps
[SystemRoot] => C:Windows
[COMSPEC] => C:Windowssystem32cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:Windows
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.4.58 (Win64) PHP/8.3.2
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => C:/Apache24/htdocs
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => C:/Apache24/htdocs
[SERVER_ADMIN] => admin@example.com
[SCRIPT_FILENAME] => C:/Apache24/htdocs/filtro/filtro.php
[REMOTE_PORT] => 54064
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => usuario=teste&senha=123&botao=
[REQUEST_URI] => /filtro/filtro.php?usuario=teste&senha=123&botao=
[SCRIPT_NAME] => /filtro/filtro.php
[PHP_SELF] => /filtro/filtro.php
)
var_dump(usuariopost)-corresponde: NULL
var_dump(usuarioget)-corresponde: string(5) "teste"
echo usuariopost-corresponde:
echo usuarioget-corresponde: teste
var_dump(usuariopost)-final: NULL
var_dump(usuarioget)-final: string(5) "teste"
print_r post:
print_r get: teste
O que nos interessa são os parâmetros:
- [REQUEST_METHOD] => GET
- [QUERY_STRING] => usuario=teste&senha=123&botao=
- [REQUEST_URI] => /filtro/filtro.php?usuario=teste&senha=123&botao=
Vejam o que apareceu no URI (barra de endereços): http://localhost/filtro/filtro.php?usuario=teste&senha=123&botao=
Obviamente os dados apareceram no URI por ser o método GET.
Acrescentando a tag value="botao" no button aparece http://localhost/filtro/filtro.php?usuario=teste&senha=123&botao=botao.
Caso executar-se o arquivo phpinfo.php (<?php phpinfo(); ?>) ver-se-á que as variáveis acima são as mesmas da seção Apache Environment e/ou PHP Variables (dependendo do sistema), com algumas diferenças.
2. Agora com method POST no html e POST no php
Não repetirei todos os parâmetros, vejam somente essas saídas:
filter_has_var: INPUT_SERVER campo REQUEST_METHOD corresponde
Array
(
...
[REQUEST_URI] => /filtro/filtro.php
[QUERY_STRING] =>
[REQUEST_METHOD] => POST
...
)
var_dump(usuariopost)-corresponde: string(5) "teste"
var_dump(usuarioget)-corresponde: NULL
echo usuariopost-corresponde: teste
echo usuarioget-corresponde:
var_dump(usuariopost)-final: string(5) "teste"
var_dump(usuarioget)-final: NULL
print_r post: teste
print_r get:
A [QUERY_STRING] veio vazia, o que é óbvio, pois o método utilizado foi o POST. E já podemos observar as diferenças entre var_dump, echo e print_r. Segue na próxima seção.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10