Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Percorsi assoluti "dinamici"

    Salve è da un pò di tempo che vorrei capirci qualcosa ma non riesco a venirne a capo:
    creare percorsi assoluti dinamici.

    poniamo (ad esempio!!) che il mio script sia il seguente

    file: config.php
    Codice PHP:
    <?php
    include("cartella/file.php");
    include(
    "cartella2/file.php");

    echo 
    "[img]image/test.png[/img]";
    ?>

    ora in un qualsiasi altra cartella di un mio ipotetico sito vorrei includere tale file e i percorsi degli include in esso contenuti devono modificarsi dinamicamente.
    seguendo la pillola di daniele_dll ho partorito quanto segue:

    Codice PHP:
    <?php
    /*ottengo il percorso fino al presente file (con i backslash!! e partendo dalla cartella generale!!)*/
    $percorso dirname(__FILE__);

    /*capovolgo gli slash (ma che differenza c'è nel percorso con gli slash capovolti??! bhò!)*/
    //sul forum mi si elimina un backslash ma nel primo parametro ce ne sono 2
    $percorso str_replace("\\"'/'$percorso);
    /*elimino il percorso fino alla root del sito così da ottenere il percorso per fare i link o gli src delle img*/
    $percorso_link str_replace($_SERVER['DOCUMENT_ROOT'], ''$percorso);

    /*$percorso conterrà il percorso fino alla cartella in cui si trova il presente file*/
    /*quindi posso fare include dinamici o link dinamici che dovranno partire sempre dal presente file*/

    include($percorso."/cartella/file.php");
    include(
    $percorso."/cartella2/file.php");

    echo 
    "[img]".$percorso_link."/image/test.png[/img]";
    ?>
    Domande e dubbi :
    - opero in modo corretto?
    - ci sono differenze tra server linux e windows: se sì quali? (ho letto qualcosina ma nn ho ben capito)
    - nella pillola di daniene_dll vi è questa riga di codice che non ho ben capito:
    Codice PHP:
    substr($_SERVER['DOCUMENT_ROOT'], -1,1) == '/' $_SERVER['HTTP_HOST'] . '/' :$_SERVER['HTTP_HOST']) 

  2. #2

  3. #3

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: Percorsi assoluti "dinamici"

    Originariamente inviato da oly1982
    Domande e dubbi :
    - opero in modo corretto?
    E' troppo banale la cosa per operare in modo sbagliato. Se funziona - allora va bene. Con le varie dirname(__FILE__), DOCUMENT_ROOT, riesci a fare tutto.

    - ci sono differenze tra server linux e windows: se sì quali? (ho letto qualcosina ma nn ho ben capito)
    La differenza che viene citata piu' spesso, e' quella dei separatori di cartella, su windows sono "\" al posto di "/". Ma e' da un bel po' che php riesce a gestire percorsi anche tipo c:/percorso/al/file.
    Invece una differenza importante e' questa: nel caso il webserver fosse iis e non apache, non esiste la variabile DOCUMENT_ROOT, in quel caso si adoperano cose tipo realpath(basename($_SERVER['SCRIPT_NAME']))

    - nella pillola di daniene_dll vi è questa riga di codice che non ho ben capito:
    Codice PHP:
    substr($_SERVER['DOCUMENT_ROOT'], -1,1) == '/' $_SERVER['HTTP_HOST'] . '/' :$_SERVER['HTTP_HOST']) 
    e' un operatore ternario.

  5. #5

    Re: Re: Percorsi assoluti "dinamici"

    Originariamente inviato da bubi1
    Se funziona - allora va bene.
    in realtà alle volte mi capita passando da locale ad on line di fare cose brutte e quindi se mi funziona il locale volevo trovare un metodo "universalmente esatto".

    Originariamente inviato da bubi1
    nel caso il webserver fosse iis e non apache, non esiste la variabile DOCUMENT_ROOT, in quel caso si adoperano cose tipo realpath(basename($_SERVER['SCRIPT_NAME']))
    quindi magari si potrebbe "aggirare il problema" in questo modo...
    Codice PHP:
    if(!isset($_SERVER['DOCUMENT_ROOT']))
    {
    $_SERVER['DOCUMENT_ROOT'] = realpath(basename($_SERVER['SCRIPT_NAME']));

    Originariamente inviato da bubi1
    e' un operatore ternario.
    eeeeeeeeeeeeeehhh? (farò qualche ricerca...)

    ... maledetto inglese :master: ... cercherò di fare ricerche e prove...

  6. #6

    Re: Percorsi assoluti "dinamici"

    Originariamente inviato da oly1982
    Codice PHP:
    $var substr($_SERVER['DOCUMENT_ROOT'], -1,1) == '/' $_SERVER['HTTP_HOST'] . '/' :$_SERVER['HTTP_HOST']) 
    Codice PHP:
    if (substr($_SERVER['DOCUMENT_ROOT'], -1,1) == '/' )
         {
         
    $var $_SERVER['HTTP_HOST'] . '/';
         }
    else
         {
         
    $var $_SERVER['HTTP_HOST'];
         } 
    Ma nelle guide (on line) nn avevo mai sentito parlare di questa intassi... mhà

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: Re: Re: Percorsi assoluti "dinamici"

    Originariamente inviato da oly1982

    quindi magari si potrebbe "aggirare il problema" in questo modo...
    Codice PHP:
    if(!isset($_SERVER['DOCUMENT_ROOT']))
    {
    $_SERVER['DOCUMENT_ROOT'] = realpath(basename($_SERVER['SCRIPT_NAME']));

    infatti, chi vuole assicurare la portabilita' della sua applicazione, adotta dei trucchi del genere. Comunque non va bene esattamente cosi', c'e' da fare un replace aggiuntivo. Fai su google document_root iis, dovrebbe uscire qualche esempio gia' fatto.
    Ma tutto questo se ti aspetti che la tua applicazione verra' eseguita su iis e non su apache.

  8. #8
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: Re: Percorsi assoluti "dinamici"

    Originariamente inviato da oly1982
    Ma nelle guide (on line) nn avevo mai sentito parlare di questa intassi... mhà
    Se c'e' una guida che non parla dell'operatore ternario - cercane un altra

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.