PDA

View Full Version : [CSS] utilizzo da altre cartelle


bouncey2k
12-11-2007, 19:00
Supponiamo che il mio sito contenga una cartella chiamata "CSS" con dei fogli di stile. Supponiamo che creo un file.php e lo metto in cartella_principale/2008/11

Come faccio a fare in modo che il file.php utilizzi i css della cartella "CSS"? che percorso gli devo dare?
E se il file abbia istruzioni include del php? (immagino si faccia come per i css).

Grazie.

andbin
12-11-2007, 20:38
Supponiamo che il mio sito contenga una cartella chiamata "CSS" con dei fogli di stile. Supponiamo che creo un file.php e lo metto in cartella_principale/2008/11

Come faccio a fare in modo che il file.php utilizzi i css della cartella "CSS"? che percorso gli devo dare?Ok, ricapitoliamo, hai una struttura del tipo:

- Sotto la root del sito hai una cartella CSS che contiene dei file .css
- Sotto la root del sito hai una struttura cartella_principale/2008/11 con un file.php

Il file css lo puoi referenziare con "../../../CSS/file.css" o con "/CSS/file.css". Il primo path è relativo al file.php, il secondo path è assoluto dalla root del sito (preferibile).

E se il file abbia istruzioni include del php? (immagino si faccia come per i css).Cioè? Spiega meglio.

bouncey2k
12-11-2007, 20:52
quindi per evitare i vari ../../../../ è meglio mettere / in tutti anche nei file di root.

Mi spiego meglio. Se in root ho un index.php che include un menu.php sarà meglio dargli un

1) <? include ("/menu.php"); ?> piuttosto che un
2) <? include ("menu.php"); ?> ? <-- punto di domanda

poiché se sposto il file index.php in /pinco/pallino mi include il menu correttamente, mentre nel secondo caso no. Giusto?

PS: mi accorgo di essermi intortato parecchio.

anonimizzato
12-11-2007, 20:59
poiché se sposto il file index.php in /pinco/pallino mi include il menu correttamente, mentre nel secondo caso no. Giusto?


Yes.

bouncey2k
12-11-2007, 22:29
il problema sull'include è semplice. I CSS me li collega, altri file php no!

per esempio in /uno/due/file.php c'è questo pezzo di codice

<div id="colonna-sinistra"><? include ("/menu-sinistra.php"); ?></div>

e il menu non mi compare..

andbin
13-11-2007, 09:23
il problema sull'include è semplice. I CSS me li collega, altri file php no!

per esempio in /uno/due/file.php c'è questo pezzo di codice

<div id="colonna-sinistra"><? include ("/menu-sinistra.php"); ?></div>

e il menu non mi compare..Per un motivo ancora più semplice! I CSS vengono prelevati lato client dallo user-agent (browser). Il client non sa nulla di dove sono messi fisicamente i file sul server, l'unica cosa che "sa" è che un path che inizia con '/' è riferito alla "root" del sito.

Negli script PHP invece tecnicamente hai accesso al file-system del server (salvo limitazioni varie, ovviamente). Quindi un path che inizia con '/' è riferito alla "root" del file-system, non del sito

Su un sistema Linux la root del sito potrebbe essere ad esempio "/var/www/tuosito/html". In PHP in genere si usa la variabile DOCUMENT_ROOT, es:

include "${_SERVER['DOCUMENT_ROOT']}/tuo_file_nella_root.php";

Ammesso che il server web imposti correttamente la variabile DOCUMENT_ROOT (mi è capitato purtroppo di vedere hosting anche professionali in cui non è così .....).

bouncey2k
13-11-2007, 12:19
ora capisco. Proverò questo metodo.
ma qual è il metodo migliore e più utilizzato allora?
DOCUMENT_ROOT o ../../../ ?
Vedo spesso siti che fanno uso di sottocartelle, ma non penso che copi-incollino il file da includere nelle cartelle altrimenti se devono fare modifiche generali devono modificare tutti i file, no?!

andbin
13-11-2007, 12:35
ora capisco. Proverò questo metodo.
ma qual è il metodo migliore e più utilizzato allora?
DOCUMENT_ROOT o ../../../ ?Io personalmente preferisco sempre usare la variabile DOCUMENT_ROOT (quindi un path assoluto).

bouncey2k
13-11-2007, 15:09
Ho inserito in /uno/due/file.php questo codice

<? include ("${_SERVER['DOCUMENT_ROOT']}/menu-sinistra.php"); ?>

e non funziona. Sbaglio qualcosa?

andbin
13-11-2007, 15:27
Ho inserito in /uno/due/file.php questo codice

<? include ("${_SERVER['DOCUMENT_ROOT']}/menu-sinistra.php"); ?>

e non funziona. Sbaglio qualcosa?Sicuro che DOCUMENT_ROOT sia corretto? Il server è "tuo" (il tuo PC) o è un hosting su internet?
Fai una pagina di phpinfo e verifica la variabile.

bouncey2k
13-11-2007, 16:22
è un hosting su internet.

bouncey2k
14-11-2007, 18:57
è un hosting su internet.

up