PHP includere file con percorso virtuale

di il
6 risposte

PHP includere file con percorso virtuale

Ciao a tutti, ho la necessità di include file con percorso virtuale, in alternativa inserire variabili di sessione nel percorso include, domanda:

Ma con PHP é possibile inserire include che conegono variabili di sessione ?

ad esempio: include_once $_SESSION["origine"] . "connetti_db.php" ;
questo include NON funziona.

il tutto per evitare di dover scrivere ogni volta il percorso esatto dei file da includere, perchè se mi trovo nel file "localhost/pippo/account.php" dovrei scrivere "../connetti_db.php" ..

Grazie per il vostro contributo

6 Risposte

  • Re: PHP includere file con percorso virtuale

    Tutte le opzioni disponibili per l'inclusione di file in PHP puoi trovarle nella documentazione ufficiale.

    Onestamente però, quello che stai cercando di fare mi sembra pericoloso e inutilmente farraginoso, forse anche "pericoloso" da un certo punto di vista, senza contare che mi pare iniquo sprecare memoria per variabili di sessione che contengono un dato fisso, ossia il percorso di base dei file dell'applicazione.

    Oltre a quanto detto sopra, per sintetizzare, non vedo proprio cosa ci sia di male nell'includere un file indicandone il percorso relativo.

    Se il tuo albero delle pagine PHP è complesso, allora c'è qualcosa va rivisto nel design dell'applicazione stessa, mentre se si tratta di andare alla cartella superiore o in una sua sottocartella, basta scrivere il path relativo e il gioco è fatto.

    Ciao!
  • Re: PHP includere file con percorso virtuale

    Ti ringrazio tanto per il tuo contributo, la necessità sorge dal fatto che così la manutenzione sarebbe più semplice, modifichi una volta e lo hai modficato dapperttutto senza andare a farlo nuovamente in tutte le pagine, certo vorrei evitare le sessioni ma non vado alternativa... ma in ogni caso non funziona...nuovamente grazie.
  • Re: PHP includere file con percorso virtuale

    Ciao Bruno66 benvenuto, come già menzionato da @Alka conosci la struttura della tua applicazione. Se ad esempio è solo composta da una cartella pippo e file index.php il percorso potrà essere solo con la parte finale del tuo webserver pippo/index.php, sai è difficile da semplice lettore capire il motivo del tuo codice (oltre a soddisfare la tua richiesta), l'operatore (punto) concatenazione di stringhe funziona in php. Stai utilizzando la sessione HTTP per memorizzare il percorso e usarlo in seguito.
    Si è possibile se crei un percorso virtuale e concedi a php di leggerlo ma che fai se poi il tuo script non funziona in altri utenti poiché possono solo eseguire il codice php?
    Usa la funzione define crea una costante php e lì farai il resto.. significa che la tua applicazione avrà una pagina di inizio.
    Banalmente crei due variabili con la costante magica __FILE__ e il valore 'index.php'. Quindi se è pippo/index.php sottrai il valore a __FILE__ ottieni la root. Il valore ottenuto root chiama altri file include 'valore_ottenuto' . 'pippo/mio_file.php';
  • Re: PHP includere file con percorso virtuale

    Invece delle sessioni usa define e crea una costante.

    io in genere mi creavo un file con tutte le costanti che mi servivano, ed includevo quello e basta.

    fare quello che vuoi fare tu è sconsigliato sotto diversi punti di vista (come ti hanno già suggerito)!
  • Re: PHP includere file con percorso virtuale

    Sì, è possibile utilizzare variabili di sessione all'interno di un'istruzione include in PHP. Il problema nell'esempio che hai fornito è che stai cercando di concatenare una stringa con una variabile di sessione senza prima inizializzare o definire la variabile di sessione. Prima di utilizzare la variabile di sessione "origine" nell'istruzione include_once, devi prima avviare la sessione con session_start() e assegnare un valore alla variabile di sessione "origine" con $_SESSION["origine"] = "valore".

  • Re: PHP includere file con percorso virtuale

    Spero di togliere ogni dubbio.

    Supponi di creare primo.php inizializzato una volta sola nella tua applicazione.

    Memorizzare i dati tramite sessione non offre la garanzia di dati aggiornati a ogni richiesta, mentre la variabile si. Quindi per il quasi 100% di affidabilità occorre creare la variabile $_SESSION per ogni richiesta  (per il motivo scritto in precedenza è comunque una variabile).

    La nota è per i siti che hanno molte richieste a brevissima distanza o quasi uguali.
    <?php
    
    $my_app_azienda = NULL;
    
    unset($my_app_azienda);
    
    $my_app_azienda =  '/path/full';
    
    session_start();
    
    $_SESSION['my_app_azienda'] = '/path/full';
    // Se la sessione id è tramite HTTP COOKIE occorre il refresh o il redirect che sovrascrive $_SESSION['my_app_azienda'] con il valore precedentemente memorizzato di default tramite file
    
    ?>

    Poiché session_start() recupera anche una sessione quindi dopo la pagina primo.php chiamiamola refresh.php con valore corrente.

    <?php
    
    include '/path/full' . '/primo.php';
    
    $my_app_azienda = $_SESSION['my_app_azienda'];
    
    header('Location: https://www.domain.tld/utente1/index.php');
    
    exit();
    
    ?>

    Poi il percorso utente1 utilizza tramite include primo.php

    Quindi dire: definire una costante una volta per poi essere sempre disponibile è sufficiente. Attualmente non penso che da /percorso/utente1/ si sposta verso altro utente /percorso/utente2/ ma è comunque parte di utente1 sebbene il percorso reale non coincide con il percorso simbolico. 

Devi accedere o registrarti per scrivere nel forum
6 risposte