Membro di PiperitaLab
Home » Cms e developing » Developing » Semplifichiamoci la vita con PHP: includere un file.

Semplifichiamoci la vita con PHP: includere un file.

Scritto da il 19 febbraio 2009 in Developing - 27 Commenti - 133 visite

ilovephp 300x218 Semplifichiamoci la vita con PHP: includere un file.Sicuramente conoscerete PHP, il linguaggio server-side da cui hanno preso vita ottimi CMS come WordPress, Joomla, Drupal.

Ma PHP non è solo grandi portali e complicati CMS. Esso infatti è largamente usato anche per creare piccoli siti e rendere lo sviluppo più veloce.

In questa serie di articoli vi spiegherò come sfruttare php per semplificarvi il lavoro in diverse occasioni.

La prima cosa che vi consiglio di fare è scaricare XAMPP. Questo programma è pensato per gli sviluppatori che hanno la necessità di installare immediatamente un ambiente che comprenda Apache, PHP e Mysql, configurati per facilitare lo sviluppo.

Detto in termini semplici, sarà come avere un server apache sul computer che sarà poi raggiungibile digitando http://localhost/.

Provate e dovrebbe aprirsi la pagina di benvenuto di XAMPP. Se non succede aprite lo XAMPP Control Panel ed avviate Apache e Mysql.

Se ora funziona raggiungete la cartella di XAMPP (su windows C:\xampp\) e recatevi nella cartella htdocs. Qui sono contenuti tutti i file accessibili dal web server. In questa cartella creiamo una sottocartella di nome iwd, che sarà la cartella dove inseriremo i file relativi al nostro articolo.

Digitate dunque http://localhost/iwd/ per accedervi come se foste un utente internet, dovrebbe esservi restituita una schermata simile a questa:

apache1 300x78 Semplifichiamoci la vita con PHP: includere un file.

La directory iwd vuota.

A questo punto possiamo iniziare a programmare.

La prima cosa che impareremo è separare il menù principale dal resto delle pagine web. Questo si può fare facilmente usando include();

Apriamo il nostro editor preferito e creiamo un nuovo file, vuoto. All’interno di questo file inseriremo un semplice codice html, che rappresenta il nostro menù principale:

<ul>
<li><a href="index.php">Home page</a></li>
<li><a href="chi_siamo.php">Chi siamo</a></li>
<li><a href="prodotti.php">I nostri prodotti</a></li>
</ul>

Fatto questo salvate il file nella cartella iwd chiamandolo menu.inc.php

Adesso creiamo una nuova pagina; questa volta inseriamo tutte le intestazioni del caso, come se stessimo creando una normale pagina web html, ad esempio:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>La mia pagina web PHP</title>
</head>
<body>
<h1>Home Page</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at velit. Maecenas lacus. Sed vitae massa. Nulla laoreet neque ac est. Nam aliquam. Suspendisse lobortis turpis sed nulla. Fusce eget sapien.
</p>
</body>
</html>

Tra il tag <body> e il tag <h1> aggiungiamo il codice evidenziato:
<body>
<?php include('menu.inc.php'); ?>
<h1>Home Page</h1>

Cosa sta succedendo?

Per prima cosa con <?php indico al server che sto per scrivere del codice php. Con ?> indico che ho finito di scrivere il codice php.

La funzione include(); include i file. In questo caso sappiamo precisamente quale file inserire, dunque dobbiamo inserire gli apici tra le parentesi e definire il percorso al file (se non sapessimo il percorso potremmo usare una variabile, ma questo lo vedremo in un altro articolo). Il ; indica la fine dell’istruzione.

Salviamo il file come index.php, sempre nella cartella iwd, e raggiungiamo la pagina web appena creata con il nostro browser. Visualizziamo il sorgente della pagina, ed ecco il risultato:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>La mia pagina web PHP</title>
</head>
<body>
<ul>
<li><a href="index.php">Home page</a></li>
<li><a href="chi_siamo.php">Chi siamo</a></li>
<li><a href="prodotti.php">I nostri prodotti</a></li>
</ul>
<h1>Home Page</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at velit. Maecenas lacus. Sed vitae massa. Nulla laoreet neque ac est. Nam aliquam. Suspendisse lobortis turpis sed nulla. Fusce eget sapien.
</p>
</body>
</html>

Come noterete il contenuto presente nel file menu.inc.php è stato trasposto in index.php quando la pagina web è stata richiesta dal browser.

Questa funzione vi sarà molto utile qualora il menù presente nel file menu.inc.php sia condivisa da più pagine (ad esempio la pagina ‘chi_siamo.php’ e ‘prodotti.php’ che potreste creare). Infatti vi basterà cambiare il file menu.inc.php per influenzare tutte le altre pagine, invece di dover cambiare il menù singolarmente su ogni pagina. Un bel vantaggio in termini di stress e di tempo.

Ma questo è solo un piccolissimo esempio di quello che è possibile fare con PHP. Nei prossimi articoli copriremo sempre diversi argomenti e pian piano raggiungerete, spero, un buon livello, dunque continuate a seguire IWD e per ogni dubbio, consiglio o correzione non esitate a commentare.

Libri da non perdere:
Amazon-Box creato da Giuseppe Frattura

27 Commenti

  1. Giancarlo (123 comments)
    Scritto il 19 febbraio 2009 alle 09:06

    L’header, il footer e i menu vanno tutti inseriti in file php esterni e richiamati con include. Questo permette di velocizzare lo sviluppo e di poter fare le operazioni di manutenzione più velocemente. Qualunque modifica ,infatti, si propagherà in tutte le pagine evitando problemi di “copia e incolla”. I puristi userebbero require o require_once…ma posso consigliarvi include_once perchè ha le stesse funzioni di include, evita che uno stesso file php esterno possa essere caricato più di una volta, e non si blocca in caso di errore (genera solo un warning).

    Infine….per chi non usa php, ma vuole lo stesso usare la tecnica dei file esterni, si può optare per i server side include e usare il tag :

    chiaramente…anche in questo caso è necessario che il server o l’hosting sia opportunamente configurato.

  2. Giancarlo (123 comments)
    Scritto il 19 febbraio 2009 alle 09:11

    ops…i tag SSI sono interpretati come commenti in html, se il server non è configurato o manca il file di riferimento…e quindi non vengono visualizzati..comunque…immaginate 1 istruzione come questa… delimitata dai tag usati per i commenti…

    #include virtual=”header.html”

  3. Simone D'Amico (26 comments)
    Scritto il 19 febbraio 2009 alle 13:26

    Ahhhh…..mischiare codice php con html!! Che orrore :) :) Ci sono le librerie di templating apposta per questo! :)

    Se vuoi modificare la grafica del sito ci metti una vita cosi a ritrovare tutto! ;)

  4. StefanoV (83 comments)
    Scritto il 19 febbraio 2009 alle 14:21

    Dario Venneri? A quanto pare la maggiorparte dei Venneri sono programmatori eh!!! :P

  5. luigi (53 comments)
    Scritto il 19 febbraio 2009 alle 14:25

    benedetto include!

  6. Giancarlo (123 comments)
    Scritto il 19 febbraio 2009 alle 14:50

    Simone se ti riferisci a librerie come smarty o cose del genere…bhe…io non ne vedo tutta questa esigenza…anzi, a volte questi strumenti ti fanno perdere più tempo! Tra l’altro se devi modificare la grafica…invece di andarla a modificare direttamente in un file php dove c’è anche l’html, la vai a modificare in un file tpl…ma il file tpl, se non ricordo male, impone cmq il richiamo di variabili, array o oggetti passati da un file php

  7. mmalgare (10 comments)
    Scritto il 19 febbraio 2009 alle 15:12

    XAMPP è un ottimo prodotto semplice da installare sia per Win che per linux.

    Per quanto riguarda smarty credo sia una buona idea separare la presentazione dagli script php, è come XHTML e i CSS.

    Chi conosce prestashop? Cosa ne pensate?

  8. Giancarlo (123 comments)
    Scritto il 19 febbraio 2009 alle 15:38

    ma se ragruppiamo tutte le query, gli oggetti o gli elementi di programmazione in un file php e magari riservi altri file php (che includono quelli precedenti)…non ottieni sempre una separazione tra presentazione e programmazione? in fondo fai la stessa cosa con smarty…i file php richiamano i tpl. I file php contengono le query e gli oggetti, i file tpl prendono quegli oggetti o i risultati delle query e li “formattano con i tag”.

  9. Giancarlo (123 comments)
    Scritto il 19 febbraio 2009 alle 15:40

    intendevo “e magari riservi altri file php (che includono quelli precedenti) solo per la presentazione”

  10. luigi (53 comments)
    Scritto il 19 febbraio 2009 alle 15:43

    aò questa è roba da programmatori, già m’è venuto il mal di testa…vi abbandono! i love rgb!

  11. mmalgare (10 comments)
    Scritto il 19 febbraio 2009 alle 16:03

    @Giancarlo: penso che i due approcci siano entrambi molto validi. Condivido quello che si è detto.

    Qualcuno ha avuto il piacere di provare prestashop?
    credo che sia qualcosa di veramente rivoluzionario e ben fatto.

  12. Lauryn (4197 comments)
    Scritto il 19 febbraio 2009 alle 17:06

    @simone: qua non si sta mischiando. se sapessi cos’è il php sapresti che non si mischia un bel niente.

    il php serve a “produrre” codice html in modo dinamico. pertanto il risultato è lo stesso. che dici ;)

  13. Giancarlo (123 comments)
    Scritto il 19 febbraio 2009 alle 18:23

    @Lauryn : No, Lauryn…Simone parlava di un altra cosa, lui sa cos’è il php e sa che serve a produrre codice dinamico…lui parlava di 1 altro strumento…che serve appunto per non mischiare i tag html con gli algoritmi o le query. Questi framework io ho avuto modo di provarli…ma mi sono reso conto che sono inutili, perchè in ogni caso puoi simulare la separazione tra tag html e algoritmi, classi, query ecc.. con 1 accurata e ordinata scrittura del codice.

  14. Lauryn (4197 comments)
    Scritto il 19 febbraio 2009 alle 18:42

    uh pardon, vi siete addentrati in cose che non conosco ancora eheh
    bravi mi piace questa discussione :D

  15. Simone D'Amico (26 comments)
    Scritto il 19 febbraio 2009 alle 18:42

    Vedo che ho sollevato un polverone! :)

    @Lauryn: Ti ha corretto Giancarlo su cosa intendevo..ha centrato in pieno il concetto.

    @Giancarlo: La mia era una semplice battuta! :) Non intendevo criticare! Però sai, ne sono contrario più che altro perchè molti, una volta che iniziano a programmare con gli “include”, il passaggio successivo è quell’orrendo echo() con tutto il codice html incluso all’interno dove si diventa matti per capire dove chiudere o meno un’apice. Poi hai voglia ad ammattire per cambiare la grafica di un sito a quel punto! Ripeto però, era solo una battuta! ;)

  16. Dario Venneri (56 comments)
    Scritto il 19 febbraio 2009 alle 20:38

    Sono contento che il mio primo post abbia scatenato una discussione.

    Imparare ad usare un template engine, specie quando hai appena installato XAMPP, richiede un bel po’ di tempo e non sempre c’è un vero risparmio, come evidenzia Giancarlo.

    Gli articoli che scrivo, e che scriverò, sono rivolti ai web designer che vogliono uno strumento per velocizzarsi il lavoro in alcuni frangenti.
    Questi di solito gestiscono piccoli siti e non devono costruire da zero portali, al massimo qualche applicazione semplice.

    E si, non mancheranno echo con dentro codice HTML :D

  17. Luca (107 comments)
    Scritto il 20 febbraio 2009 alle 17:07

    Dal momento che sono parti fondamentali, propongo di usare la funzione require() al posto della include().

    Così facendo se non troverà un file darà un errore, bloccandone la visualizzazione distorta.

    Saluti
    Luca

  18. simone (53 comments)
    Scritto il 27 febbraio 2009 alle 20:28

    salve a tutti!
    Io ho un problema con le include che è questo:
    ho una pre pagina iniziale di un sito che contiene solo codice html da questa quando clicco su entra richiamo una index.php che contiene 2 include di 2 menu.il punto è che se la richiamo direttamente visualizza i menù mentre se la richiamo dalla pre pagina le include non me le interpreta ed i menu chiaramente non ci sono.da che dipende?
    Grazie anticipartamente

  19. Lauryn (4197 comments)
    Scritto il 27 febbraio 2009 alle 20:57

    @simone: strano, puoi mostrarci la pagina? poi vediamo se è sufficiente per capire il problema.

  20. simone (53 comments)
    Scritto il 27 febbraio 2009 alle 21:00

    Stranissimo perchè tra l’altro il file php incluso e la pagina che contiene le include sono nella stessa directory ti posto il pezzo di codice:
    Pre_Pagina:

    Index.php:

    Grazie x l’attenzione

  21. simone (53 comments)
    Scritto il 27 febbraio 2009 alle 21:02

    Riscrivo il codice:
    Pre_pagina:

    Index:

    “”

  22. simone (53 comments)
    Scritto il 27 febbraio 2009 alle 21:02

    Come faccio per postarvi il codice?

  23. Dario Venneri (56 comments)
    Scritto il 27 febbraio 2009 alle 21:07

    Ti conviene postarlo in un file TXT, caricarlo su un server e linkarcelo.

  24. simone (53 comments)
    Scritto il 27 febbraio 2009 alle 21:22

    monsi.altervista.org/include_problema.txt

  25. Lauryn (4197 comments)
    Scritto il 27 febbraio 2009 alle 23:38

    prova ad usare un require invece che un include e vediamo se succede ancora…

  26. Scritto il 25 ottobre 2010 alle 09:12

    Un consiglio, se volete usare le inclusioni di file utilizzare sempre la versione con _once :
    include_once(“file.php”);
    require_once(“file.php”);

    Questo perchè il file non verrà incluso se è già incluso in una sezione precedente del codice.

  27. Lauryn (4197 comments)
    Scritto il 25 ottobre 2010 alle 09:25

    grazie!!

Scrivi un commento!

© 2012 Italian webdesign. Diritti riservati. Ideato da Laura Gargiulo - Icone di Komodo Media - Logo di W3B.