Forum->Flatnux->accesso alle funzioni core di flatnux NEXT e all'array $_FN nelle chiamate ajax...
  
Benvenuto Sconosciuto Registrati Aiuto383 Utenti

Utente Messaggio


johndorazio

0 Livello 0 10

levellevellevellevellevellevellevellevellevellevel
profile mail home
Sabato 03 Settembre 2011 - 07:00

accesso alle funzioni core di flatnux NEXT e all'array $_FN nelle chiamate ajax...:
Sto notando che flatnux NEXT è molto diverso come struttura di includes.

Mentre in flatnux 2011, quando facevo chiamate ajax a files php, la variabile globale "$_FN" era sempre accessibile anche senza dichiarare "global $_FN" (e non mi sono mai spiegato come era possibile), questo non è il caso per flatnux NEXT, anche se dichiaro "global $_FN".

Sto cercando di verificare se l'utente è amministratore. Questo richiede le funzioni core di flatnux, perciò faccio l'include dei files che contengono le funzioni di flatnux. Mentre in flatnux 2011 bastava fare l'include di "flatnux.php", e questo a sua volta faceva l'include di tutti gli altri files con le varie funzioni, vedo invece che in flatnux NEXT "flatnux.php" non solo fa l'include di tutte le funzioni ma crea effettivamente la pagina. ???

Non capisco bene questo nuovo sistema.

Se faccio un include di flatnux.php, ho una pagina dentro una pagina.

Allora non faccio l'include di flatnux.php, faccio l'include di "functions.inc.php".
Vedo che da solo "functions.inc.php" non basta, perché "fn_isadmin()" non risulta definito.

Allora faccio l'include di "functions.inc.php" e di "auth/local.php". Ora "fn_isadmin()" risulta definito, ma non restituisce alcun valore perché "$_FN" è vuoto.

Se faccio, nel file php chiamato via ajax:

global $_FN;
echo "La variabile d'ambiente FN contiene i seguenti valori: <br />";
echo "<pre>";
print_r($_FN);
echo "</pre>";


il risultato è nullo, vedo soltanto l'intestazione "La variabile d'ambiente FN contiene i seguenti valori".

"$_FN" non è più accessibile! Non è più "global"? Che cosa c'è di diverso rispetto a flatnux 2011?

____________________________
"The whole of science is nothing more than a refinement of everyday thinking." (Albert Einstein)



johndorazio

0 Livello 0 10

levellevellevellevellevellevellevellevellevellevel
profile mail home
Sabato 03 Settembre 2011 - 07:10

Re: accesso alle funzioni core di flatnux NEXT e all'array $_FN nelle chiamate ajax...:
correggo un dettaglio del post precedente:

facendo l'include di "functions.inc.php", la funzione "FN_IsAdmin()" risulta definita, ma non la funzione "FN_GetUser()" che è da essa richiesta.

Bisogna fare l'include di "auth/local.php" perché la funzione "FN_GetUser()" sia definita.

____________________________
"The whole of science is nothing more than a refinement of everyday thinking." (Albert Einstein)



speleoalex

0 Livello 10 10

levellevellevellevellevellevellevellevellevellevel
profile mail
Domenica 04 Settembre 2011 - 14:02

Re: accesso alle funzioni core di flatnux NEXT e all'array $_FN nelle chiamate ajax...:
in realtà deve bastare includere flatnux.php.
Il problema potrebbe essere dovutoa alla posizione dello script.
Per ora, per funzionare correttamente, uno script che vuole vedere tutte le funzioni di FN deve stare allo stesso livello della index, a meno di non fare un chdir prima di includere flatnux.php.


Alessandro




johndorazio

0 Livello 0 10

levellevellevellevellevellevellevellevellevellevel
profile mail home
Lunedì 05 Settembre 2011 - 00:19

Re: accesso alle funzioni core di flatnux NEXT e all'array $_FN nelle chiamate ajax...:
strano adesso funziona. Non so che cosa succedeva ieri. Quando facevo l'include di flatnux.php, mi includeva tutta la pagina dentro la pagina. Adesso invece sta funzionando correttamente e la variabile globale $_FN è di nuovo visibile. Forse un semplice problema di cache del browser...

In ogni modo, penso di aver finalmente trovare il miglior modo per effettuare gli includes da uno script php chiamato via ajax (oltre a tornare alla root). Con diversi server condivisi trovo sempre diverse impostazioni per trovare i percorsi assoluti, forse adesso ho trovato la soluzione. Setto l'include path in questo modo:

function GetBasePath() { 
return substr($_SERVER['SCRIPT_FILENAME'], 0, strlen( $_SERVER['SCRIPT_FILENAME']) - strlen(strrchr($_SERVER['SCRIPT_FILENAME'], "\\")) - strlen($_SERVER["SCRIPT_NAME"]) + 1 );
}
$basepath = GetBasePath();

set_include_path(get_include_path().PATH_SEPARATOR.$basepath);


E suppongo che il miglior modo per tornare alla root è questo:

// set current working directory to site root
while(!file_exists("index.php")){
chdir("..");
}


____________________________
"The whole of science is nothing more than a refinement of everyday thinking." (Albert Einstein)

 [1]