Chamadas de variável de uma página para outra no PHP8

1. Chamadas de variável de uma página para outra no PHP8

CASSIANO DE ARAUJO GUIMARÃES
cassianoag

(usa CentOS)

Enviado em 16/05/2025 - 09:39h

Olá tudo bem!

Estou fazendo a migração do PHP 5.4 para o PHP 8 estou fazendo as diversas atualizações que necessitam serem feitas só que agora me deparei com um problema e gostaria se vocês pode me dar alguma direção. Nas minhas páginas que armazenam as variáveis para inserir, atualizar no banco de dados não me preocupava em colocar as requisições $_REQUEST, $_POST, $_GET na mesma forma que no formulário nos campos input eu apenas recepcionava na pagina túnel a variável normalmente sem utilização das requisições conforme mencionei. Por exemplo:

PHP 5.4
pagina1.php
<input type='text' name='nome_completo' value=''>
<input type='text' name='cpf' value=''>

pagina2.php
insert into pessoa (nome_completo,cpf) value ('$nome_completo','$cpf');

PHP 8.?
pagina2.php
$nome_completo=$_REQUEST['nome_completo'];
$cpf=$_REQUEST['cpf'];
insert into pessoa (nome_completo,cpf) value ('$nome_completo','$cpf');

A minha pergunta é se existe alguma configuração no PHP8 que permaneça sem que eu tenha que utilizar as requisições $_REQUEST, $_POST, $_GET ou se agora é uma obrigação do PHP8 sempre utilizar as requisições para reconhecer as variáveis que passa de uma pagina para outra.

Agradeço desde já pela atenção.




  


2. Re: Chamadas de variável de uma página para outra no PHP8

Buckminster
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!


3. Re: Chamadas de variável de uma página para outra no PHP8

CASSIANO DE ARAUJO GUIMARÃES
cassianoag

(usa CentOS)

Enviado em 16/05/2025 - 17:11h

Ótima explicação. Entendi!

Vou ter que alterar todo o código são várias páginas vai me levar um bom tempo.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts