Salve,
come da titolo avrei bisogno di sapere se è possibile, e se si come, sapere da che parte dello script
proviene la chiamata (include, require, instanza di una classe ecc...) ad un file. Mi spiego meglio.
Sto lavorando a una classe per la gestione del sito in multilingua che abbia le seguenti caratteristiche:
[list=1]
* Gestione multilingua anche dei contenuti di un database (esempio descrizione di prodotti).
* Semplicità di utilizzo (è sufficente tradurre i file in altre lingue .. es: in tedesco ... e ricaricare il browser rendere effettive le modifiche.
* Possibilità di usare immagini con scritte nella lingua desiderata o supportata dal browser.
* Alta configurabilità.
* Molto altro.[/list=1]
In pratica funziona così:
Quando l'utente apre la pagina principale (non è possibile aprire una pagina senza passare dalla index) viene estratta la lingua del suo browser. Subito dopo un metodo si occupa di scorrere l'array contenente tutte le lingue supportate e se trova una corrispondenza verifica che ci siano la directory corrispondente, la directory delle immagini, i file corrispondenti e le imamgini corrispondenti. Se tutto è ok viene impostata una sessione sulla lingua del browser del utente (lingua che può essere cambiata manualmente dal menù a tendina), se manca la lingua corrispondente a quella accettata dal browser vengono rifatti tutti i controlli usando la lingua impostata di default che è l'inglese. Putacaso mancassero anche i file corrispondenti alla lingua di default significa che è successo qualcosa di poco bello sul server e, se almeno questi ci sono, l'utente viene ridiretto ad una pagina di errore con un supporto multilingua interno che lo informa di tale errore.
Ordunque la domanda, anzi le domande, sono:
Premesso che tutto questo meccanismo, compreso il supporto per il database, sta già funzionando vorrei sapere se è possibile fare un qualcosa di questo genere:
if (utente_proviene_da_administration/index.php)
{
Verifico la cartella della lingua contenuta in administration e nel caso di errori gravi sono più esaustivo nel generare un rapporto di errore.
} else {
Quella contenuta nella parte del sito ed in questo caso i messaggi di errore saranno i più scarni possibile.
}
Lo so che un admin se si logga ha già un cookie e che se apre la administration/index.php senza avere un cookie riceve la form di login ma con la classe che ho scritto, limitatamente alle mie possibilità, non è possibile distinguere tra admin o utente normale a meno che non sia già autenticato.
Ne consegue che per forza ho una copia della classe detectLanguage nelle librerie del pannello di controllo e una nelle librerie del sito e quello che vorrei fare sarebbe di usarne una piazzandola nella librerie comuni (cartella common).
Qualcuno sa dirmi se è possibile fare ciò ?
Avevo pensato a un qualcosa di questo genere:
codice:
<?php
define ( 'ADMIN', dirname (__FILE__) ); // Creo un path per l'admin
$path = explode ( /, ADMIN ); // Prendo in array il path
array_pop ( $path ); // Gli elimino l'ultimo elemento (difatto risalgo alla root del sito)
define ( 'SITE', implode ( /, $path ) );// Creo il path per la root del sito
if ( ADMIN . '/index,php' ) // Se la chiamata proviene da http://miosito/admin/index.php
{
// Metto i controlli necessari e includo i file necessari
} elseif ( SITE . '/index.php') { // Altrimenti se viene da http://miosito/index.php
// Metto qua i controlli necessari e includo i file necessari
} else {
// E' successo qualcosa di poco bello
header ( 'Location: pagina_di_errore' );
}
?>
ma non funziona
Grazie per le risposte
Adriano