Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

Explanações sobre o que é URI, URL, URN e conferindo na prática algumas diferenças entre POST e GET com PHP e HTML. Também tem um teste que verifica algumas diferenças entre POST e GET, um teste simples dos limites de caracteres que alguns navegadores suportam na barra de endereços e um teste simples de velocidade das solicitações POST e GET.

[ Hits: 3.993 ]

Por: Buckminster em 30/04/2024


Tempo de Solicitação 2



Arquivo adaptado para o Windows evitando o bloqueio por não ter certificado local para o https.

"Erro ao enviar a requisição: SSL certificate problem: unable to get local issuer certificate".

Na prática somente acrescentei o parâmetro "CURLOPT_SSL_VERIFYPEER => 0," nas opções "curl_setopt_array" para impedir a verificação do certificado, sendo que não influenciou nos resultados.

Na realidade, fiquei com preguiça de instalar certificado no Windows, foi mais rápido e fácil acrescentar a linha.



tempoW.php:

echo '<br>1 --------------------------------------------------------------------<br><br>';
// GET
// Usando file_get_contents
// URL para teste
$urlG_FGC = 'https://www.vivaolinux.com.br/testarLogin.php';

// Mede o tempo inicial da requisição
$tempoInicialG_FGC = hrtime(true);

// Faz a requisição GET
$respostaG_FGC = file_get_contents($urlG_FGC);

// Mede o tempo final da requisição
$tempoFinalG_FGC = hrtime(true);

// Calcula o tempo decorrido: echo $variavel/1e+6; //nanosegundos para milisegundos
//$tempoDecorridoG_FGC = round(($tempoFinalG_FGC - $tempoInicialG_FGC) * 1000, 2);
$tempoDecorridoG_FGC = round($tempoFinalG_FGC - $tempoInicialG_FGC);

// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição GET (file_get_contents):<br>";
//var_dump($respostaG_FGC);
//echo $respostaG_FGC;

// Exibe o tempo decorrido formatado com dois dígitos após o ponto
//echo "Tempo decorrido: {$tempoDecorridoG_FGC} ms<br>";
echo "Tempo decorrido: " .number_format($tempoDecorridoG_FGC/1e+6, 2, '.', ''). " ms<br>";

echo '<br>2 --------------------------------------------------------------------<br><br>';
// GET Usando cURL
// URL para teste
$urlG_URL = 'https://www.vivaolinux.com.br/testarLogin.php';

// Inicializa o cURL
$curlG_URL = curl_init();

// Define as opções do cURL
curl_setopt_array($curlG_URL, array(
    CURLOPT_URL => $urlG_URL,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPGET => true,
    //CURLOPT_SSL_VERIFYHOST => 0,
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_TIMEOUT => 30, // Tempo limite da requisição em segundos
));

// Mede o tempo inicial da requisição
$tempoInicialG_URL = hrtime(true);

// Executa a requisição GET
$respostaG_URL = curl_exec($curlG_URL);

// Mede o tempo final da requisição
$tempoFinalG_URL = hrtime(true);

// Calcula o tempo decorrido: echo $variavel/1e+6; //nanosegundos para milisegundos
//$tempoDecorridoG_URL = round(($tempoFinalG_URL - $tempoInicialG_URL) * 1000, 2);
$tempoDecorridoG_URL = round($tempoFinalG_URL - $tempoInicialG_URL);

// Verifica se houve algum erro na requisição
if(curl_errno($curlG_URL)){
    echo 'Erro ao enviar a requisição: ' . curl_error($curlG_URL);
} else {

    // Exibe a resposta da requisição (para fins de depuração)
    echo "Resposta da requisição GET (cURL):<br>";
    //var_dump($respostaG_URL);

    // Exibe o tempo decorrido formatado com dois dígitos após o ponto
    //echo "Tempo decorrido: {$tempoDecorridoG_URL} ms<br>";
    echo "Tempo decorrido: ".number_format($tempoDecorridoG_URL/1e+6, 2, '.', ''). " ms<br>";
}

// Fecha a conexão cURL
curl_close($curlG_URL);

echo '<br>3 --------------------------------------------------------------------<br><br>';
// POST com file_get_contents
// URL para onde será feita a requisição POST
$urlP_FGC = 'https://www.vivaolinux.com.br/testarLogin.php';

// Dados a serem enviados via POST
$formLogin = filter_input(INPUT_POST, 'formLogin', FILTER_UNSAFE_RAW);
$formSenha = filter_input(INPUT_POST, 'formSenha', FILTER_UNSAFE_RAW);
$dadoP_FGC = array(
    'formLogin' => $formLogin,
    'formSenha' => $formSenha,
);

// Configuração da requisição
$opcoesP_FGC = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($dadoP_FGC),
        'timeout' => 30, // Tempo limite de espera em segundos
    ),
);
// Início da contagem de tempo
$tempoInicialP_FGC = hrtime(true);

// Realiza a requisição POST
$respostaP_FGC = file_get_contents($urlP_FGC, false, stream_context_create($opcoesP_FGC));

// Fim da contagem de tempo
$tempoFinalP_FGC = hrtime(true);

// Calcula o tempo de requisição
//$tempoDecorridoP_FGC = round(($tempoFinalP_FGC - $tempoInicialP_FGC) * 1000, 2);
$tempoDecorridoP_FGC = round($tempoFinalP_FGC - $tempoInicialP_FGC);

// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição POST (file_get_contents):<br>";
//var_dump($respostaP_FGC);
if (array_key_exists("formLogin", $dadoP_FGC)) {
    echo "O elemento "; $v = var_dump($formLogin, true); echo $v; echo " está no array!<br>";
}
// Exibe o tempo de requisição formatado com dois dígitos após o ponto
//echo "Tempo decorrido: {$tempoDecorridoP_FGC} ms<br>";
echo "Tempo decorrido: ".number_format($tempoDecorridoP_FGC/1e+6, 2, '.', ''). " ms<br>";

echo '<br>4 --------------------------------------------------------------------<br><br>';
// POST cURL
// URL para teste
$urlP_URL = 'https://www.vivaolinux.com.br/testarLogin.php';

// Dados a serem enviados na requisição POST
$formLogin = filter_input(INPUT_POST, 'formLogin', FILTER_UNSAFE_RAW);
$formSenha = filter_input(INPUT_POST, 'formSenha', FILTER_UNSAFE_RAW);
$dadoP_URL = array('formLogin' => $formLogin, 'formSenha' => $formSenha,);

// Inicializa o cURL
$curlP_URL = curl_init();

// Define as opções do cURL
curl_setopt_array($curlP_URL, array(
    CURLOPT_URL => $urlP_URL,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($dadoP_URL),
    //CURLOPT_SSL_VERIFYHOST => 0,
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_TIMEOUT => 30, // Tempo limite da requisição em segundos
));

// Mede o tempo inicial da requisição
$tempoInicialP_URL = hrtime(true);

// Executa a requisição POST
$respostaP_URL = curl_exec($curlP_URL);

// Mede o tempo final da requisição
$tempoFinalP_URL = hrtime(true);

// Calcula o tempo decorrido em milissegundos
$tempoDecorridoP_URL = round($tempoFinalP_URL - $tempoInicialP_URL);

// Verifica se houve algum erro na requisição
if(curl_errno($curlP_URL)){
    echo 'Erro ao enviar a requisição: ' . curl_error($curlP_URL);
} else {

    // Exibe a resposta da requisição (para fins de depuração)
    echo "Resposta da requisição POST (cURL):<br>";
    //var_dump($respostaP_URL);
    if (array_key_exists("formSenha", $dadoP_URL)) {
        echo "O elemento "; $v = var_export($formSenha, true); echo $v; echo " está no array!<br>";
    }

    // Exibe o tempo decorrido
    //echo "Tempo decorrido: {$tempoDecorridoP_URL} ms<br>";
    echo "Tempo decorrido: ".number_format($tempoDecorridoP_URL/1e+6, 2, '.', ''). " ms<br>";
}

// Fecha a conexão cURL
curl_close($curlP_URL);

// GET e POST com file()
// Função para medir o tempo decorrido
function calcularTempo($tempoInicial) {
    $tempoFinal = hrtime(true);
    //return round(($tempoFinal - $tempoInicial) * 1000, 2); // Tempo em milissegundos
    return round($tempoFinal - $tempoInicial);
}

// URL
$url = 'https://www.vivaolinux.com.br/testarLogin.php';

// Medição do tempo para requisição GET
$tempoInicialGET = hrtime(true);
$respostaGET = file($url); // Faz a requisição GET
$tempoGET = calcularTempo($tempoInicialGET);

// Medição do tempo para requisição POST
$tempoInicialPOST = hrtime(true);
$dadoPOST = array('parametro1' => 'valor1', 'parametro2' => 'valor2');
$opcoes = array(
        'http' => array(
        'Content-Type' => 'application/x-www-form-urlencoded
',
        'method' => 'POST',
        'header' => 'Content-Type: application/x-www-form-urlencoded',
        'content' => http_build_query($dadoPOST)
    )
);
$contexto = stream_context_create($opcoes);
$respostaPOST = file($url, false, $contexto); // Faz a requisição POST
$tempoPOST = calcularTempo($tempoInicialPOST);
echo '<br>5 --------------------------------------------------------------------<br><br>';
// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição GET (file):<br>";
//var_dump($respostaGET);
//echo "Tempo decorrido: {$tempoGET} ms<br>";
echo "Tempo decorrido: ".number_format($tempoGET/1e+6, 2, '.', ''). " ms<br>";

echo '<br>6 --------------------------------------------------------------------<br><br>';
// Exibe a resposta da requisição (para fins de depuração)
echo "Resposta da requisição POST (file):<br>";
//var_dump($respostaPOST);
//echo "Tempo decorrido: {$tempoPOST} ms<br>";
echo "Tempo decorrido: ".number_format($tempoPOST/1e+6, 2, '.', ''). " ms<br>";
echo '<br>----------------------------------------------------------------------<br><br>';

Vamos a conclusão...

Página anterior     Próxima página

Páginas do artigo
   1. Entendendo o que é URI, URL, URN
   2. POST e GET
   3. Códigos dos Testes
   4. Execução dos Testes 1
   5. Execução dos Testes 2
   6. Código do Teste de Tempo
   7. Tempo de Solicitação 1
   8. Tempo de Solicitação 2
   9. Conclusão
Outros artigos deste autor

Manual traduzido do Squid - Parte 3

Manual traduzido do Squid - Parte 2

ClamAV, o kit de ferramentas antivírus

VMD no Debian - Instalação e configuração

Compilação do Kernel

Leitura recomendada

Gerando gráficos com PHP e highcharts.com

Ninguém planeja fracassar, mas muitos fracassam por não planejar

Desenvolvendo um componente de calendário dinâmico em PHP

JOOMLA no openSUSE em 10 passos

Lista de extensões preferidas para Joomla!

  
Comentários
[1] Comentário enviado por maurixnovatrento em 23/06/2024 - 23:35h

Excelente artigo e bem completo.

______________________________________________________________________
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


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts