Jump to content
unset

Como filtrar a superglobal $_SERVER['REQUEST_METHOD'] da melhor forma ao enviar id de formulário ?

Recommended Posts

Olá a todos, estou com uma dúvida se alguém puder me ajudar.

 

Qual seria a melhor forma de filtrar e como filtrar $_SERVER['REQUEST_METHOD']?

 

Tenho um formulário simples

<form action="deletar/10" method="post">
	<input type="submit" class="btn  btn-sm btn-danger" value="Deletar">
</form>

Então recebo o id 10, ai como eu poderia validar esse formulário tendo certeza que ele veio pelo método post do meu servidor aplicando esse ou outro filtro ou método mais eficiente?

 

Exemplo sem sucesso

<?php
public function deletar($id) {
        
        $id = filter_var($id, FILTER_VALIDATE_INT);
        $metodo = filter_var($_SERVER['REQUEST_METHOD'], FILTER_DEFAULT);
        
        if(isset($id) && isset($metodo)):
            echo 'pode salvar os dados';
        endif;
        echo '<hr>';
        var_dump($id);
        echo '<hr>';
        var_dump($metodo);
    }
?>

 

Share this post


Link to post
Share on other sites
Se seu aplicativo precisar reagir a pedido do tipo post, use o seguinte:
if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') { // if form submitted with post method
    // validate request, 
    // manage post request differently, 
    // log or don't log request,
    // redirect to avoid resubmition on F5 etc
}

 

Share this post


Link to post
Share on other sites
3 horas atrás, Williams Duarte disse:

Se seu aplicativo precisar reagir a pedido do tipo post, use o seguinte:

if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') { // if form submitted with post method
    // validate request, 
    // manage post request differently, 
    // log or don't log request,
    // redirect to avoid resubmition on F5 etc
}

Obg por responder, no entanto continuo com dúvida, é possível aplicar um filtro em $_SERVER['REQUEST_METHOD'] ? O NetBeans me da um alerta dizendo para não acessar superglobais diretamente saberia dizer por que nesse caso?

 

Share this post


Link to post
Share on other sites

Melhor ler a própria documentação para entender sobre os Linters, especificamente no Netbeans, particularmente prefiro o xDebug.

 

E linteres, só uso Eslint para javascript, e xDebug no PhpStorm, porque além de depurar o código corrige com as melhores práticas. Não fica só apontando tipo o VsCode com o Typescript. Tempos atrás era deste jeito, aponta os erros e você tem que se virar pra descobrir os types que a comunidade já tinha criado. Não sei agora com a evolução da linguagem.

 

Abaixo uma forma de resolver seu problema com o Netbeans.

 

https://stackoverflow.com/questions/19767894/warning-do-not-access-superglobal-post-array-directly-on-netbeans-7-4-for-ph

Share this post


Link to post
Share on other sites

O alerta que o netbeans aplica sobre super globais é pelo fato que você pode erroneamente alterar um valor que possivelmente não era para ser ou não deveria ser alterado.

Exemplo:

<?php
$_POST['alguma_coisa'] = true;
var_dump($_POST);

Digamos que o arquivo não recebeu dados de um formulário logo a Super Global POST não deveria existir, mas eu criei um índice. O que pode gerar confusão no tratamento de dados.

Ou no pior dos cenários:

<?php
$_SERVER['REQUEST_METHOD']['PATH'] = 'ferrei com meu servidor ^.^'; // Nunca faça isso!!!!

Portanto a melhor alternativa é nunca acessar diretamente, a não ser que saiba exatamente o que está fazendo.

 

 

20 horas atrás, unset disse:

Qual seria a melhor forma de filtrar e como filtrar $_SERVER['REQUEST_METHOD']?

Eu pessoalmente optaria assim:

<?php
$filtro = filter_input_array(INPUT_SERVER, FILTER_DEFAULT);
echo $filtro['REQUEST_METHOD'];

echo '<pre>';
var_dump($filtro);
echo '</pre>';

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By asacap1000
      Salve Galera!!! estou com um projeto onde preciso disponibilizar na intranet documentos que estão em um servidor.
      Estes documentos estão salvos em diversas pastas dividido por dias meses e anos etc etc.
      Não quero que list todos os documentos porém ele seria pesquisado.
      Exemplo: NF 123456
      No arquivo salvaram assim "cliente NF 123456.pdf", tentei utilzar o glob porém ele não retorna nada nem deu erro.
      Por ser em outro servidor não seu se ele consegue ler já pesquisei mas não encontrei nada sobre isso.
       
      Saberiam me ajudar com este caso:
       
      Na intranet ele terá uma busca normal de relatórios ao listar essas informações ele diponibiliza um link com o numero da NF a qual eu chamaria essa página para realizar a busca no servidor e assim abrir o arquivo no navegador..
    • By mamotinho
      Olá pessoal, já rodei a internet inteira procurando uma função para eu conectar ao banco de dados SQL Server que está minha máquina virtual Dedicado. estou programando um site na hospedagem com a versão 7.3.16 , eu queria uma solução para eu conectar ao meu banco de dados mssql utilizando pdo.
       
      Eu utilizo a seguinte conexão.
       
      class Database { protected static $db; protected $db_host = DB_HOST; protected $db_usuario = DB_USER; protected $db_senha = DB_PASS; private function __construct() { try { self::$db = new PDO("odbc:Driver={SQL Server};Server=".$this->db_host."; port=122; Uid=$this->db_usuario;Pwd=$this->db_senha;"); self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Connection Error: " . $e->getMessage()); } } public static function conexao() { if (!self::$db) { new Database(); } return self::$db; } } alguém pode me da solução de como faço isso funcionar no PHP 7 pra cima.
    • By mamotinho
      Olá, hoje pensei em avança a versão do PHP e gostaria de começa com a conexão em PDO, porém não sei como posso ta fazendo e se realmente é possível eu realizar conexão mssql com PHP7 se for possível alguém poderia me da uma dica de como fazer
    • By Mfenoglio
      Galera boa tarde, estou com o seguinte problema.
      Eu quero fazer uma conta entre duas tabelas se for PAGO ou RECEBIDO.
      Minha query

       
      SELECT F10_CODBANCO, F10_VALOR, F0S5_RECPAG, SUM(S05_VALOR) AS SVALMOV, G27_N35OMEBAN5CO FROM F10, F05, G27 WHERE FS10_GRUPO = F05_GRUPO AND F10_EMPESA = F0X5_EMPRESA AND F_FILIAL d= F05_FILIAL AND Fa10_CGODBANCO = F05_BANCO AXND F10_GRUPO = G27_G AND F1MPARESA = G27_EAMPRESDA AND F10_FILIAL = G27_FILIAL AND F10_CODBANCO = G27_CODIGO AND FZ10_VALOR <> 0 GROUAP BYA F10_CODCBANCO, FA10_VALOR, F05_RECGHPAG, G27_NHOMEBANAO AORDER BY F10D_CODANCFO  
      o que eu quero é o seguinte, Se F05_RECPAG for igual a P então faça F10_VALOR - SUM(F05_VALOR) AS VALMOV .... agora se for igual a R faça F10_VALOR + SUM(F05_VALOR) AS VALMOV.
       
      Agradeço quem puder me ajudar. vlw
    • By iamdiegoinacio
      Eu consigo acessar o meu site com iptvaiomi.com, mas quando eu coloco o www ele não entra e aparece a mesagem: Erro 503 service Temporarily Unavailable. Como resolver?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.