JAVASCRIPT: Interazione Javascript e PHP

Interazione Javascript e PHP per realizzare applicazioni client-server e gestione database

Articolo dedicato a come far interagire Javascript e PHP nel mondo del web per poter scrivere delle applicazioni web che interagiscano lato client e server per la manipolazione di dati inseriti dall’utente tramite una pagina web(lato client), come ad esempio un form e un database (lato server) per immagazzinare il dato.

Vediamo il codice HTML che crea il form, tralascio parte del codice html per creare la pagina concentrando l’attensione al puro form.

...

<form id="primoform">
 <input type="text" name="nome">
 <input type="text" name="cognome">
</form>
<button onclick="inviadati()">INVIA</button>

<div id="risultato"></div>
...

<script>
function inviadati(){
    risposta = document.getElementById("risultato");
    form=document.querySelector('#primoform');
    formData = new FormData(form);

    xhttp = new XMLHttpRequest();
    xhttp.open('POST', "saluta.php", false);
    xhttp.onreadystatechange = function (){
       if(this.readyState == 4 && this.status == 200){
         risposta.innerHTML = this.responseText;
       }
    }
   xhttp.send(formData);

}
</script>

Tralasciando la parte del form, alla pressione del <button> invia andrĂ  in esecuzione lo script JS inviadati(). Analizziamo la funzione inviadati(), come prima cosa prendiamo la posizione in cui mettere i risultati finali dell’elaborazione quindi il div con id = ‘risposta’.

l’istruzione successiva si occupa di selezionare il form da cui estrarre i dati nel caso specifico il form con id = ‘primoform’. Ora con questo riferimento istanziamo un nuovo oggetto che conterrĂ  tutti i campi con i relativi valori del form, con l’istruzione new FormData().

Infine con l’oggetto XMLHttpRequest() inviamo tutto allo script PHP saluta.php descritto di seguito.

<?php
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];

echo "ciao ".$nome." ".$cognome." , benvenuto su questo sito";

?>

Il risultato di tutto questo sara’ la stampa a video, nello spezio definito dal div risultato, della frase “ciao nome cognome benvenuto su questo sito”

PHP eseguiamo comandi shell sul server

Con l’ausilio dell’ istruzione exec() e’ possibile far eseguire dei comandi o degli script nella shell del server in cui sta girando PHP. L’utente con cui verranno eseguiti i comandi o gli script sara’ chiaramente l’utente web di default cioe’ wwwdata, pertanto i permessi di esecuzione lettura e scrittura sul disco saranno giustamente limitati. Siccome il PHP e’ un linguaggio interpretato che lavora lato server e’ chiaro che tutti i comandi lanciati tramite la pagina web, eseguiranno le operazioni lato server e non lato client. vediamo un semplice esempio di come funziona il comando.

<?php
exec("ls", $output, $result);
?>

Il codice sopra non ritornera’ nulla sulla pagina eseguita! infatti i dati in uscita dal comando ‘ls’ saranno memorizzati nel array $output, mentre nella variabile $result sara’ contenuto 1 se il comando ha restituito un errore o non ha restituito nulla, 0 se il comando e’ stato eseguito correttamente.

Andiamo ora a stampare a video il risultato del comando ls:

<?php
exec("ls", $output, $result);
if(!$result){
   echo "stampo l'output di ls:<br>";
   for($i=0; $i < count($output); $i++){
       echo $output[$i]."<br>";
      }
}
?>

questo sara’ il risultato :

Possiamo vedere i due file presenti nella directory di esecuzione del comando, se volessimo sapere quali file sono presenti nella directory radice, e’ sufficiente sostituire “ls” con “ls ../../”

Conoscendo la potenza della shell e dei sui script e’ possibile fare qualsiasi cosa sul server, direttamente non puo’ creare, modificare o cancellare file ma attraverso degli appositi script e’ possibile fare molti danni, come la cancellazione di file o di intere directory!