back to top

PHP e Javascript: come integrarli e farli lavorare insieme

In talune situazioni potrebbe essere comodo eseguire codice PHP attraverso Javascript. A prima vista la combinazione di questi due linguaggi potrebbe apparire impossibile: PHP è un linguaggio che opera lato-server mente Javascript lato-client. In che modo, quindi, possiamo eseguire istruzioni PHP "lato-client" con Javascript?.

Quello che sembra difficile a realizzarsi, tuttavia, può essere fatto tranquillamente. E’ bene, tuttavia, sgombrare il campo da equivoci: all’interno di un file Javascript non posso scrivere codice PHP, perchè il secondo possa integragire attraverso il primo serve qualche stratagemma.

Prima di entrare nel vivo del discorso, tuttavia, si rende necessaria una premessa: perché dovrebbe interessarci eseguire PHP da Javascript?

Perché eseguire PHP attraverso Javascript

Javascript è un linguaggio straordinario: ci consente di interagire con l’utente creando interfacce utente sempre più interattive e coinvolgenti. Poter "lanciare" programmi PHP da Javascript significa, pertanto, introdurre un ancor maggiore livello di interattività, potendo contare anche su operazioni eseguite a livello server.

Ad esempio possiamo leggere e scrivere dati sul database o creare cartelle all’interno del filesystem alla pressione di un pulsante, alla compilazione di un modulo o anche al semplice scrolling di pagina!

Insomma, avere la possibilità di interagire con il server attraverso le meccaniche di Javascript aggiunge molte ed interessanti freccie all’arco dello sviluppatore.

Integrare Javascript all’interno di una pagina PHP

Nulla vieta di utilizzare codice PHP all’interno di uno script lato-client. Si supponga, ad esempio di dover valorizzare una variabile Javascript con un output prodotto da PHP. Per farlo sarà sufficiente inserire direttamente il codice Javascript all’interno dell’output prodotto dalla nostra pagina PHP (ad esempio "index.php"):

<script type="text/javascript">
  var my_var = <?php echo json_encode($my_var); ?>;
</script>

Quanto proposto qui sopra non funzionerà, ovviamente, qualora si cerchi di utilizzare codice PHP all’interno di un Javascript esterno (un file ".js"): in questo caso, infatti, l’interprete PHP non agirà e il codice PHP sarà trattato come del semplice testo.

Eseguire file PHP come se fossero file Javascript

Un trucco per eseguire codice Javascript "potenziato" con PHP consiste nell’includere, all’interno della nostra pagina web, un vero e proprio file PHP richiamandolo attraverso l’attributo src di un tag <script> in questo modo:

<html>
  <head>

    <script src="/lato_server.php"></script>

  </head>
  <body>

  </body>
</html>

Così facendo il browser richiamerà il nostro file PHP esattamente come avrebbe fatto con un comune file Javascript. All’interno di quel file, quindi, possiamo svolgere tutte le operazioni di cui abbiamo bisogno e poi produrre un output conforme alle specifiche di Javascript, in questo modo:

<?php
// eseguo le operazioni lato server
// ...
// ...
// ...

// ad esempio posso valorizzare una varibile attraverso dati estratti da un database
$my_var = $rs['campo_db'];

// definizione del Content Type
@header("Content-type: application/javascript");

// produco un output
// ad esempio stampo a video una stringa con document.write()
echo 'document.write(\'' . $my_var . '\');';
?>

Volendo essere più eleganti potremmo impostare un file .htaccess per riscrivere l’estensione del nostro script in ".js" in questo modo:

RewriteEngine On
RewriteRule ^lato_server\.js$ lato_server.php

A questo punto potremo includere il file PHP come fosse un JS:

<script src="/lato_server.js"></script>

Attraverso questa tecnica il nostro file PHP verrà eseguito al caricamento della pagina. Una simile implementazione potrebbe essere idonea in alcuni contesti come, ad esempio, lo sviluppo di sistemi di analytics (in quanto con PHP si potrebbero registrare gli accessi alla pagina web) o al lancio di operazioni pianificate.

Eseguire PHP attraverso AJAX

Grazie alla tecnologia AJAX è possibile effettuare una chiamata asincrona ad un qualsiasi script eventualmente anche recuprandone l’output (che potrà poi essere manipolato lato client)!

Per prima cosa vediamo come sarebbe possibile effettuare una semplice chiamata AJAX ad un file PHP affinchè possano essere svolte determinate operazioni lato-server:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {};
xhr.open('GET', '/lato_server.php');
xhr.send()

Quando questo script verrà eseguito, il browser effettuerà una chiamata al file "lato_server.php" che potrà svolgere i suoi compiti. Nulla vieta di sottoporre l’esecuzione di questo codice al verificarsi di un qualche evento come, ad esempio, la pressione di un pulsante.

Eseguire PHP in modo asincrono con jQuery

Se nel nostro progetto web abbiamo incluso la libreria jQuery l’interazione tra PHP e Javascript sarà ancora più semplice. Volendo riprodurre lo stesso esempio visto poco sopra, con jQuery sarebbe bastato una riga di codice:

$.ajax(
  'type': 'GET',
  'url': '/lato_server.php'
);

Volendo avremmo potuto anche passare dei parametri al nostro file PHP, in questo modo:

$.ajax(
  'type': 'GET',
  'url': '/lato_server.php',
  'data': 'nome=Mario&cognome=Rossi'
);

Così facendo, nel nostro esempio, abbiamo passato con metodo GET due coppie di chiave valore. Ovviamente tali valori potrebbero essere catturati dinamicamente da un form o ricavati da una qualsivoglia attività compiuta dall’utente.

Ma non solo. Grazie ad AJAX abbiamo anche la possibilità di intercettare un eventuale output prodotto dallo script lato-server per poi manipolarlo lato-cliente, ad esempio:

$.ajax(
  'type': 'GET',
  'url': '/lato_server.php',
  'data': 'nome=Mario&cognome=Rossi',
  'success': function(risposta) {
    alert(risposta)
  }
);

Questo codice cattura l’output prodotto lato-server (ad esempio una stringa di testo del tipo "Ciao Mario Rossi, grazie per esserti registrato al sito!") e lo mostra all’utente attraverso un alert().

Quelli visti sopra sono solo esempi, ma le potenzialità di AJAX sono davvero infinite. Per chi desiderasse approfondire l’argomento consiglio la lettura di questo interessante articolo dedicato all’implementazione di AJAX con jQuery.

Conclusioni

In questo articolo abbiamo visto diverse metodiche attraverso le quali è possibile integrare PHP all’interno di Javascript. La "fusione" di questi due linguaggi consente di risolvere in modo creativo soluzioni apparentemente complesse.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Correggere l’errore the uploaded file exceeds the upload_max_filesize directive in php.ini

L'errore the uploaded file exceeds the upload_max_filesize directive in...

Cannot modify header information – headers already sent: come risolvere l’errore PHP

L'errore di PHP cannot modify header information - headers...

Ricavare l’estensione di un file con PHP

Quando si lavora con i file in un'applicazione web,...

GD Library: creazione, manipolazione e ridimensionamento immagini con PHP

Le librerie GD (o GD Library), sono componenti fondamentali...

PHP: impostare il fuso orario italiano

Le tue pagine PHP non mostrano l’orario corretto? Probabilmente...

5 script PHP per gestire BBCode

A volte può aversi l'esigenza di dover offrire agli...
Pubblicitร