
Dynamic DNS a costo zero
Dovete pubblicare un sito o collegarvi sempre e ovunque al vostro PC e vi serve un indirizzo IP fisso? Noi vi mostriamo come farlo senza spendere soldi
(pagina 3 di 6)
Uno sguardo “sotto il cofano”
Vediamo a grandi linee il meccanismo di funzionamento degli
script PHP che danno vita al nostro server pseudo-DDNS. Lo script index.
php inizia con l’inclusione del file database.php che si occupa
di stabilire una connessione al database server MySQL dopodiché si verifica l’esistenza delle variabili $_POST[‘username’]
e $_POST[‘password’]: la prima volta che questa pagina viene
visualizzata in un web browser le due variabili non risultano settate
quindi verrà richiamata la funzione formLogin (riga 8). Questa
funzione non fa altro che visualizzare un modulo composto
da due campi (username e password) e da un tasto per l’invio.
I valori che l’utente scriverà in questi campi saranno inviati con
il metodo POST al medesimo script index.php. Dopo la compilazione
del modulo le due variabili $_POST[‘username’] e $_
POST[‘password’] risulteranno impostate ed il codice eseguito
sarà quello che inizia alla riga 11. Qui viene richiamata la funzione
verificaLogin che ha il compito di verificare se lo username e la
password sono presenti nel database. Altri parametri della funzione
sono le variabili $ipaddress e $msgErrore che vengono passate
per riferimento (notare il simbolo “&”) e che quindi potranno
essere modificate dalla funzione verificaLogin. Effettivamente
$msgErrore conterrà gli eventuali messaggi di errore che dovranno
essere notificati all’utente (ad esempio se lo username non è
presente nel database) mentre $ipaddress verrà impostato dalla
funzione verificaLogin con l’indirizzo IP che nel database risulta
appartenere all’utente. La funzione verificaLogin restituisce il valore
0 se l’autenticazione dell’utente viene eseguita correttamente
mentre restituisce 1 in caso di insuccesso; in quest’ultimo caso
dalla riga 11 si salta alla riga 37: viene richiamata nuovamente la
funzione formLogin e quindi all’utente sarà riproposto il modulo
per l’accesso con in evidenza il messaggio di errore $msgErrore.
Se il login ha successo viene eseguito il blocco di codice che va
dalla riga 14 alla riga 34 che prevede innanzitutto il confronto
tra l’indirizzo IP memorizzato nel database ($ipaddress) e quello
rilevato dal server ($_SERVER[‘REMOTE_ADDR’]): se c’è stata
una modifica dell’indirizzo rispetto all’ultimo valore registrato
viene eseguito un aggiornamento al database (righe 15-16). Alla
riga 21 si verifica se la form di login è stata compilata dall’utente
usando un comune web browser oppure dal client ddns.sh che
analizzeremo in seguito: la verifica si basa su un campo nascosto
della form ($_POST[‘interattivo’]) che viene impostato solo
dal web browser mentre non viene affatto considerato dallo script
Bash. In pratica, quindi, se la pagina viene visualizzata in modo
interattivo dall’utente a questo punto comparirà un messaggio di
conferma (righe 23-27) mentre in caso contrario (righe 30-33)
per ogni account presente nel database viene creata una riga che
contiene la stringa “<<
>>” (vedremo in seguito a cosa
serve), il nome dell’utente, una tabulazione orizzontale e, infine,
l’indirizzo IP attualmente associato. L’output ottenuto sarà simile
al seguente:<<>>pippo 192.168.1.12
<<>>pluto 10.0.1.13
<<>>paperino 172.16.1.23
Configurare la parte client
Il tool per il servizio di Dynamic DNS comunica l’indirizzo IP della macchina al server.
Commenta
Prima di pubblicare un tuo commento assicurati che:- sia in tema e contribuisca alla discussione in corso
- non abbia contenuto razzista o sessista
- non sia offensivo, calunnioso o diffamante
La redazione con i controlli a campione si riserva di cancellare qualsiasi contenuto ingiurioso, volgare, illegale o contrario alla policy.