Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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);
}
?>>
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?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.
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>';
Se seu aplicativo precisar reagir a pedido do tipo post, use o seguinte: