
Buckminster
(usa Debian)
Enviado em 16/05/2025 - 13:21h
Isso funcionava porque o PHP podia "criar variáveis automaticamente" com base nos dados de entrada, uma funcionalidade conhecida como register_globals que não tem mais por padrão no PHP8, a partir do PHP7 se não me engano.
Em PHP 8, deve-se usar $_POST, $_GET, $_REQUEST, ou outro melhor: filter_input()) ou outro filter para acessar dados enviados por formulários ou URLs.
Não tem mais como acessar variáveis diretamente no PHP por uma questão de segurança.
Exemplos:
<form id="formulario" name="formulario" method="post">
<input type='text' name='nome_completo' value=''>
<input type='text' name='cpf' value=''>
<button type="submit" value="submit" class="acao" id="tabela" name="tabela" formaction="../tabelas" formtarget="_blank">Calcular Tabela</button>
</form>
E na página "tabelas", usando SESSION:
if (filter_input(INPUT_POST, 'tabela', FILTER_UNSAFE_RAW)) {
$_SESSION['nome_completo'] = filter_input(INPUT_POST, 'nome_completo', FILTER_SANITIZE_SPECIAL_CHARS);
$_SESSION['cpf'] = filter_input(INPUT_POST, 'cpf', FILTER_SANITIZE_STRING);
//var_dump($_SESSION);
$nome_completo = $_SESSION['nome_completo'];
$cpf = $_SESSION['cpf'];
Ou assim:
if (!empty(filter_input(INPUT_SERVER, "REQUEST_METHOD") === "POST")) {
try {
require_once '/var/www/pasta/conexao.php';
$nome_completo = trim(filter_input(INPUT_POST, 'nome_completo', FILTER_SANITIZE_SPECIAL_CHARS));
$cpf = trim(filter_input(INPUT_POST, 'cpf', FILTER_SANITIZE_STRING));
ou sem o try, tanto faz.
Os dois com PHP PDO, mas pode ser sem também.
Lembrando que em $nome_completo = $_REQUEST['nome_completo']; a variável $_REQUEST aceita tanto POST quanto GET passados pelo HTML.
Prefira usar filter_input() ou filter_var() para sanitização e validação:
$nome_completo = filter_input(INPUT_POST, 'nome_completo', FILTER_SANITIZE_SPECIAL_CHARS);
$cpf = filter_input(INPUT_POST, 'cpf', FILTER_SANITIZE_STRING);
O conteúdo da superglobal que está sendo filtrado é o conteúdo "bruto" original antes de qualquer modificação feita pelo usuário na superglobal. Para filtrar uma superglobal modificada, use filter_var().
Veja aqui as "superglobals", mas não é recomendado usá-las diretamente.
https://www.php.net/manual/pt_BR/language.variables.superglobals.php
https://www.php.net/manual/en/reserved.variables.request.php
https://www.php.net/manual/en/function.filter-input.php
https://www.php.net/manual/en/function.filter-var.php
_________________________________________________________
Rule number one: Always listen 'to' Buck!
Enquanto o cursor estiver pulsando, há vida!