+2

Mudanças na Migração para o PHP 4.2/4.3

criado por Paulo Assis em 09/01/2003 3:42pm
As superglobais podem ser acessadas de qualquer lugar do script, mesmo dentro de funções, sem precisar declará-las globais como as $HTTP_*_VARS. Elas foram criadas no PHP 4.1, portanto, scripts que utilizem estas variáveis não funcionarão no PHP 4.0.x e anteriores. Muitos provedores e ISPs ainda executam uma versão do PHP anterior à 4.1. Se a plataforma onde o programa vai ser executado está sob o controle do programador, com certeza a melhor escolha é a utilização destas superglobais. Caso contrário, a melhor solução é utilizar as globais $HTTP_*_VARS.

$_POST, $_GET, $_SESSION, $_SERVER, $_COOKIE, $_FILES e $_ENV são idênticas às $HTTP_*_VARS descritas anteriormente. Além da nova variável $_REQUEST, que contém todas as variáveis recebidas pelo script, como POST, GET, COOKIE, etc., sempre seguindo a ordem da configuração variables_order.

Comentários:

Mostrando 1 - 10 de 10 comentários
Olá, estou com um micro aqui com a seguinte configuração:

Win98 + Apache 1.3.x + PHP

O php, apache, rodam normalmente, mas a variável register_globals do php.ini continua se comportando como se estivesse OFF, mas eu me certifiquei e ela está ON!!!

Tentei alguns dos metodos listados acima, nenhum deles me ajudou também...
27/06/2003 3:44pm (~17 anos atrás)

Fiz alguns teste com a função:
ini_set("register_globals", "On");
Mais não funcionol, pelo o que vi no site do php. Esta configurações tem niveis e alguns deles não são acessados e o caso de register_globals.

Eu uso o PHP 4.3 e nele essa função não funciona, ou pelomenos não no nivel de execução que eu estou.

O link é:
http://www.php.net/manual/en/function.ini-set.php

25/01/2003 7:54am (~18 anos atrás)

Valew.. era essa minha dúvida.. si a partir do ini_set, ele alterava soh pra um script ou pra sempre.
22/01/2003 12:24pm (~18 anos atrás)

Valew.. era essa minha dúvida.. si a partir do ini_set, ele alterava soh pra um script ou pra sempre.
22/01/2003 12:24pm (~18 anos atrás)

através do ini_set posso alterar as configurações do php.ini, porém mi vieram algumas dúvidas.

Estas alterações são permanentes?

Alguns scripts prontos, ainda necessitam do register_globals on a exemplo do phpAdsNew, o q fazer nesse caso? se desenvolvo um script com o globals off e preciso dele on pra rodar o phpAdsNew?

Existe algum problema grave em utilizar o register_globals on? pois utilizo o 4.2.2 e ele está on. No meu server, sempre que eles atualizam o php, eles deixam o ON como padrão, tem algum problema de grave nisso ou naum?
21/01/2003 1:21pm (~18 anos atrás)

Paulo Assis disse:
é, eu troquei todos eles no phpwebthings... é um pouco trabalhoso mas compensa. O código fica mais limpo também.

[ ]'s
20/01/2003 12:29pm (~18 anos atrás)

Estou tendo problemas com o captura das sessions, e acho que é devido a essas alterações do PHP.

Bem, vou explicar como está a configuração.

register_globals = On
session.auto_start = Off
session.use_trans_sid = 1

PHPs: 4.1.2 ou 4.2.2

bem, na página de que faço o login verifico se os dados batem com o BD, depois depois de algumas chacagens e tal o próximo passo é registrar as sessions..

session_register("id_usuario")
...
etc

na mesma página coloco apenas para verificação:

$variaveis=$HTTP_SESSION_VARS;
foreach ($variaveis as $exibe){
echo "<h3>$exibe</h3>";
}

e estão lá todos valores das variáveis...
mas só resgato com o <?ini_set("register_globals","Off");?>

mas na próxima página não consigo resgatar os valores das sessions...COM <?ini_set("register_globals","Off");?> OU SEM ELE...

quando passei O ID de sessão manualmente consegui resgatar os valores das sessions...

utilizei essa sintaxe
"<a href=pagina.php?".session_name()."=".session_id."().">"

mas nesse caso terei que colocar MANUALMENTE em todos os links e inclusive nos action POST dos formulários...

e agora?

como resgatar as sessions nessas condicoes?

PS: a aplicação usa as var globals por isso tenho que permanecer com register_globals em On

;)
13/01/2003 2:02pm (~18 anos atrás)

João K. disse:
Para corrigir rapidamente esse problema do register_globals=off, sem alteração o php.ini. Utilize este trecho de código antes do seu script.

if(!empty($HTTP_COOKIE_VARS)) {
while(list($xxxname, $value) = each($HTTP_COOKIE_VARS)) {
$$xxxname = $value;
}
}
if(!empty($HTTP_GET_VARS)) {
while(list($xxxname, $value) = each($HTTP_GET_VARS)) {
$$xxxname = $value;
}
}
if(!empty($HTTP_POST_VARS)){
while(list($xxxname, $value) = each($HTTP_POST_VARS)) {
$$xxxname = $value;
}
}
if(!empty($HTTP_POST_FILES)) {
while(list($xxxname, $value) = each($HTTP_POST_FILES)) {
$$xxxname = $value['tmp_name'];
}
}
09/01/2003 11:01pm (~18 anos atrás)

Gostei muito desse lembre que vc fez... em meus scripts sempre usava as variaveis globais, quando li um artigo sobre isso em um site entrangeiro...
Parabéns pelo excelente artigo!!!
09/01/2003 9:54pm (~18 anos atrás)

Eu gostaria de agradece ao autor deste artigo, pois apesar de já ter solidos conhecimentos na programação em php e fazer praticamente tudo com essa linguagem eu ainda tinha medo de instalas uma versão posterior a 4.1.2, pois tentei algumas outras vezes e tive problemas com sessão e variávei passadas por URL. Decidi hoje, exatamente há cinco minutos atrás a instalar a versão 4.3.0 do php e depois de ler este artigo percebi que o problema pode não ter sido a minha isntalação anterior e sim minha falta de conhcemento a respeito das mudanças na linguagem.

Deixo registrado aqui, meu MUITO OBRIGADO!!!
09/01/2003 7:21pm (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)