Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012

    conoscere la provenienza di una inclusione

    ciao a tutti!!!

    scusate la mia ignoranza ma prima di postare questo thread ho perso ore a leggere vari forum e vari thread (compreso php.net e un pacchetto di chesterfield intero) ma senza risultato.

    il mio problema è questo:

    sto cercando di realizzare una piccola macchinetta che mi permetta di gestire l'inclusone di codice html per la gestione di template per il mio sito.

    ho costruito un head e un foot comune a tutto il sito, e con la funzione di include, i link interni al codice (mi riferisco alle immagini) vengono alterati in quanto ereditano il path del file che chiama l' inclusione. mi spiego ( o ci provo):

    partendo dalla root

    head.html : il logo ha link images/logo.jpg

    foot.html : il Copyright ha link images/cr.jpg

    trovandomi nella sottodir root/azienda/

    creo il file index.php e chiamo con include i 2 files head e foot con include("../head.html")

    Entrambi vengono processati correttamente, e il codice è visualizzato ma le immagini no in quanto queste ereditano il path del file includente, e quindi mi trovo un link a azienda/images/logo.jpg , ovviamente inesistente!!!

    è possibile conoscere tramite php, il file che chiede l'inclusione? posso dire a head.html (che trasformerò in head.php e dove inserirò il codice) che il file che richiede la sua inclusione è root/azienda/index.php ?!?!?!


    help please

    in alternativa, come posso risolvere il mio problema originale, ovvero la gestione dei file template in maniera semplice senza doverli toccare?

  2. #2
    se ho ben capito i file php sono nella directory /azienda, mentre le immagini nella directory /images. perciò dalla directory azienda per recuperare una immagine contenuta in /images devi scrivere il path assoluto, cioè ad esempio

    [img]../images/logo.jpg[/img]

    che vuol dire "risali alla directory precedente e poi entra nella directory images"

  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    esattamente...

    ed il problema appunto è che utilizzando include i link delle immagini ereditano il path del file che chiama l' inclusione.

    andare a letto e chiudere gli occhi a volte non vuol dire staccare la spina, un piccolo escamotage potrebbe essere questo:

    nel file root/azienda/index.php potrei inserire questo codice:

    <?
    $from=$_SERVER['REQUEST_URI'];
    include ("../head.php);
    <?

    nel file head.php:

    <?
    include ("root.php"); //il file che dovrà svolgere tutto il lavoro di costruzione delle varie ../ e ./
    ....codice html....
    e ad ogni immagine dovrei inserire nel suo link la variabile generata da root.php

    un pò macchinoso.... non trovi?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  4. #4
    infatti, per questo sarebbe meglio metetre tutto in una unica directory, ad esempio i file PHP in root/azienda e le immagini in root/azienda/immagini, così come i file include in root/azienda/include. Così non hai bisogno di inserire i path assoluti ma solo le directory e i nomi dei file, tipo include('immagini/logo.jpg')!

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    infatti sembra essere l' unica soluzione....

    il mio scopo era quello di tenere ordine all' interno delle cartelle,con riferimenti unici e gestire il tutto a livello di codice senza dover ricorrere alla duplicazione delle cartelle.. la cosa si presenta interessante in quanto sarebbe potuto diventare un metodo unico di gestione del template per l'intero sito e quelli a venire.

    Ho letto nelle pillole qualcosa che si sarebbe potuto avvicinare molto al mio problema ma ancora complesso a livello di gestione.

    ad ogni modo continuerò a lavorarci sopra.

    Risolto il problema pubblicherò sicuramente lo script per onor di causa

    grazie emulman!!
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Utente di HTML.it L'avatar di dvd86
    Registrato dal
    Oct 2006
    Messaggi
    166
    novità? hai risolto in qlc modo?

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    si ho risolto hairagione anche te

    ecco il mio file di root

    Codice PHP:
    <?
    $_SERVER
    ['DOCUMENT_ROOT']="localhost/tua cartella/sottocartella/"
    $root_site=$_SERVER['DOCUMENT_ROOT'];
    $root_file=$_SERVER['SCRIPT_NAME'];
    $root_f=explode("/",$root_file);
    $temp=array();
    for (
    $a=0;$a<=count($root_f)-2;$a++)  
      
    $temp[]=$root_f[$a];
    $root_f=$temp;
    $root_s=explode("/",$root_site);
    $diff=count($root_f)-count($root_s);
    $walk="";
    for (
    $x=0;$x<=$diff;$x++)
      
    $walk.="../";
    //echo $walk;
    ?>

    questa riga

    $_SERVER['DOCUMENT_ROOT']="localhost/tua cartella/sottocartella/";

    è importante per far credere a php che la root del sito sia quella che definisci te.

    questo perchè se sonon in locale, in un ambiente di prova ho SOLO una cartella di pubblicazione. e se devo testare 10 siti diversi?? non posso "switchare" !
    però posso ingannare php...

    root del mio pg

    www

    root di pincopallo

    www/pincopallo <--- tutto il suo sito
    $_SERVER['DOCUMENT_ROOT']="localhost/pincopallo/";


    lo script deve essere presente in ogni sottocartella e incluso in ogni pagina.

    se ho un' immagine la chiamo con

    [img]<? echo $walk ?>path/immagine.jpg[/img] SENZA la barra in quanto già $walk termina con /


    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8

    Re: conoscere la provenienza di una inclusione

    Originariamente inviato da dottwatson
    ...
    in alternativa, come posso risolvere il mio problema originale, ovvero la gestione dei file template in maniera semplice senza doverli toccare?
    Il metodo che tu presagivi dovesse esistere effettivamente esiste ed è molto più semplice: per i percorsi di quelle immagini dovresti usare un foglio di stile esterno, che vede i percorsi dalla sua posizione a prescindere da quella del file che lo richiama con il tag <LINK>.

    Poi il tuo problema (molto più banale) sarebbe solo quello di richiamare il file CSS da qualsiasi posizione, ma è cosa fatta se lo metti nella root o in una cartella qualsiasi, servendoti della variabile di server $_SERVER['DOCUMENT_ROOT'] di cui avete parlato nei post (a tal proposito vedi funzioni relRoot() e relPath(): http://forum.html.it/forum/showthrea...readid=1141452).
    Altrimenti fai una fatica molto più grande che praticamente è... inutile!

    Il CSS è stato inventato appositamente per questo.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    se ti limiti al css hai ragione...

    ma se devo gestire degli include, file di configurazione, classi ecc?

    dove ?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    Quel thread che ti ho postato riguarda esattamente il problema che hai tu

    Nella ricerca che feci scoprii due ragioni serie per le quali sarebbe seriamente sconsigliato far affidamento sull'uso di $_SERVER['DOCUMENT_ROOT'] per una web application che deve avere i requisiti di portabilità (come sembra che anche tu voglia), e che mi portarono ad ottenere quella piccola library di due funzioni, utilissima.

    Per vedere solo il risultato, prova a leggere il post del 01-10-2007 ore 15:47, ovvero modalità di utilizzo delle costanti.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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.