php5: retrocompatibilità con php4

Ho creato un sito in php4 e con la versione 5 ho riscontrato già un primo problema: "Undefined variable: HTTP_POST_VARS ...".

Dove posso trovare informazioni sulla retrocompatibilità tra php5 e php4?

Grazie

 :bye:

inviato 10 anni fa
Nico Colonna
X 0 X

Ti posso garantire che la compatibilità è praticamente assoluta.

L'array HTTP_POST_VARS è stato sostituito già in php 4.1.0 da $_POST. Stesso discorso con $_GET.

risposto 10 anni fa
usecram
X 0 X
risposto 10 anni fa
usecram
X 0 X

nel php.ini setta la seguente direttiva:

register_long_arrays = On

comunque non usare più quello stile.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Salve ragazzi, dato che dovevo reinstallare tutto, avendo cambiato scheda madre, ho fatto la scelta di installare apache 2 , Php5 e Mysql 5.

Ho solo un problema:

 le variabili normalmente definite in modo associativo (es $pippo = 1 oppure $pluto="sono pluto") non vengono rilevate visualizzando un errore del tipo  "Notice: Undefined variable: prefix_azienda"

Ho provato a impostare il parametro nel php.in : register_long_arrays = on

MA NON SUCCEDE NULLA. Ho cercato in tutte le impostazioni del php.ini e non ho trovato nulla... chi può aiutarmi?

Ultima domanda: Ma come si dovrebbero definire le variabili in PHP5 ? Io so comne si fa in jva, in Visual Basic in Asp e in Jsp .. ma in PHP5 (ovviamente è solo una curiosità dato che preferisco il metodo associativo classico).

Grazie in anticipo

risposto 9 anni fa
janfri
X 0 X

non credo che il problema derivi dalla valorizzazione delle variabili, che non ha subito cambiamenti, ma piuttosto dal fatto che gli errori di tipo NOTICE in PHP4 non venivano mostrati di default, cosa che invece avviene in PHP5.

Quindi controlla se effettivamente a quella variabile non è stato assegnato alcun valore. Ti ricordo che ad ogni esecuzione di uno script PHP tutte le variabili, tranne $_SESSION, vengono perse.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

La strada è sbagliata:  gli errori di tipo NOTICE nel PHP5 che ho installato  NON venivano mostrati di default, ho dovuto io chiedere di mostrarmi tutti gli errori compreso i NOTICE. Il primo stato era che le pagine in php mi venivano presentate tuttte bianche e alla richiesta del codice html vedevo le righe di PHP del primo file incluso.

Le pagine che sto testando sono siti gia pubblicati e funzionanti sia in locale (prima dell'aggiornamento a PHP5) sia quelli pubblicati sul web, onde per cui non c'entra il fatto che la variabile si impostata davvero o no e nemmeno il discorso sulle variabili di sessione. Ti ringrazio e spero che abbiate altre indicazioni per risolvere l'arcano.

P.S. non sono un genio ma sono 7 anni che programmo in PHP.

 

risposto 9 anni fa
janfri
X 0 X

potrebbe dipendere da una variazione del register_global?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

No Gianni, Il register_Global è impostato ad  OFF

risposto 9 anni fa
janfri
X 0 X

potresti riportare una parte del codice che ha smesso di funzionare, magari dicendo quali righe danno il NOTICE?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Il codice che ha smesso di funzionare è tutto!! Sono cerco che non è un problema di come è scritto il codice ma solo dell'impostazione di PHP che non riconosce l'assegnazione ma richiede una definizione di variabile (cosa non necessaria fino a php4).

risposto 9 anni fa
janfri
X 0 X

Sono come S. Tommaso  :angel:, se non vedo non credo  :)

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

come S. Tomasicchio vorrai dire  ;D

risposto 9 anni fa
Xscratch
X 0 X
come S. Tomasicchio vorrai dire  ;D

dannazione, mi avete scoperto  :coolsmiley:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ok faccio un sunto...

Pagina index.php

<?php

session_start();

// variabili di navigazione

session_register("var1");

session_register("var2");

session_register("var3");

include("./_include/config.php");

...

?>

All'interno di config.php:

$prefix_azienda = "xxx"

Il risultato:

Notice: Undefined variable: prefix_azienda in G:\Generale\www\xxxx\index.php on line 23

risposto 9 anni fa
janfri
X 0 X

$prefix_azienda è in sessione?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

No. E' una variabile normalissima.

risposto 9 anni fa
janfri
X 0 X

riporta tutto il codice  :dunno:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

il ; nell'assegnazione è solo una svista riportando il codice, vero?

L'assegnazione è la riga 23?

risposto 9 anni fa
LonelyWolf
X 0 X
OK!!

prima parte pagina index.php
<?php 
session_start();
// variabili di navigazione
session_register("xxxx");
session_register("yyyy");
....
include("./_include/config.php");
include("./_include/".$prefix_azienda."_dll.php");

parte del file config.php

<?php
/* parametri del database */
$db_server = "localhost";
$db_username = "xxxx";
$db_password = "xxxx";
$db_name = "xxxx";
// dati accesso default 
$dbute_server = "localhost";
$dbute_username = "xxxx";
$dbute_password = "xxxx";
$dbute_name = "xxxx";
// costanti posiozione cartelle
$nome_azienda = "Carta dei Servizi"; // prefisso file azienda
if (!isset($prefix_azienda)) $prefix_azienda = "cser"; // prefisso file generali
$prefix_admin = "xyz0"; // prefisso file administrator
$prefix_table = "xyz1";   // prefisso tabelle generiche
$prefix_tab = "xyz2";   // prefisso tabelle
$prefix_ana = "xyz3";   // prefisso anagrafiche
?>

La prima variabile che utilizza è la $prefix_azienda quando cerca di includere il file ".$prefix_azienda."_dll.php

ed ovviamente visto che da' errore proprio su quella variabile produce:

Notice: Undefined variable: prefix_azienda in G:\Generale\www\Cartaservizi2006\index.php on line 23

Warning: include(./_include/_dll.php) [function.include]: failed to open stream: No such file or directory in G:\Generale\www\Cartaservizi2006\index.php on line 23

Warning: include() [function.include]: Failed opening './_include/_dll.php' for inclusion (include_path='.;C:\php5\pear') in G:\Generale\www\Cartaservizi2006\index.php on line 23

Fatal error: Call to undefined function connect_db() in G:\Generale\www\Cartaservizi2006\index.php on line 26

risposto 9 anni fa
janfri
modificato 9 anni fa
X 0 X

Prova a mettere dopo

include("./_include/config.php");

l'istruzione:

var_dump($GLOBALS);

exit();

e leggi tutte le variabili settate.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda