Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    26

    Verificare la provenienza di un file

    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

  2. #2
    io non sono in grado di aiutarti... anzi ho aperto un post "simile"

    http://forum.html.it/forum/showthrea...readid=1408352

    nn sò se ti potrà essere utile...

  3. #3
    Non sono sicuro di aver capito bene il problema, ma non e' sufficiente controllare se __FILE__ contiene "administration" o no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    26
    Penso di aver risolto ... ma non disdegno un parare da persone più esperte.

    Premesso che la stringa che io cerco è in PHP_SELF

    codice:
    <?php
    
    $url = $_SERVER['PHP_SELF']; // dal pannello di controllo stampa /administration/index.php
    $adminPage = explode ( "/", $url ); // prendo in array il contenuto di adminPage
    array_pop ( $adminPage ); // Rimuovo l'ultimo elemento
    $isAdminPage = trim(implode( " ", $adminPage ) ); // Assegno a isAdminPage il contenuto del array
                                                                           // $adminPage, che adesso contiene o niente o 
                                                                           // solamente la parola 'administration' facendo
                                                                           // attenzione a rimuovere gli spazi al inizio e alla
                                                                           // fine della stringa.
    
    // Adesso con un ciclo switch controllo cosa contiene $isAdminPage. 
    // Se contiene la stringa 'administration' eseguo un blocco di istruzioni, altrimenti ne eseguo un altro.
    
    ?>
    Che ve ne pare ?
    Commenti e suggerimenti sono ben accetti.

    Adriano

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.