lunedì 20 ottobre 2008

PHP e l'input utente

Quante volte abbiamo pensato: "Quant'è comodo il php, mi servirebbe uno script che prende da tastiera un numero e....... Come si fa a prendere da tastiera?"

Non so voi quanto lo avete pensato ma io si, e non trovando nelle api, forse perchè non c'è proprio, la soluzione, me la sono scritta pensando un po' in C-ese.



Mi sa che già altri hanno trovato questa soluzione quindi se su internet trovate un articolo simile non mi spammate i commenti di: "Brutto copiaincoller che non sei altro!!!"

Su Gnu/Linux esiste un file che si chiama STDIN che prende l'input da linea di comando. Già in C quando ci si metteva in lettura su questo file il programma si interrompeva e aspettava che l'utente inserisse una linea chiudendo con un invio ("\n").

Perchè non riprodurre questa procedura anche su PHP?

Il php non ha la define STDIN ma mette a disposizione il seguente path: "php://stdin". Una gran comodità.
Quindi apriamo il nostro editor di fiducia e inseriamo il seguente script nei tag appropriati:


$f = fopen("php://stdin","R");
echo 'Inserire qui la stringa >>> ';
$string = fread($f,255);

echo 'Stringa passata: '.$string."\n";

Avendo questo risultato:



La funzione fread bloccherà lo script fino a chè l'utente non digiterà invio, dopo di che verranno presi, in questo caso, i primi 255 caratteri (byte) della stringa. Ovviamente il numero di caratteri da prendere sono a discrezione di chi scrive lo script, ma evitiamo di prendere input troppo lunghi quando non occorre.

Fatto questo aprite la shell e digitate:

$php mio_script_di_prova.php

e ammirate come aspetta diligentemente che voi inseriate una stringa.
La tipizzazione debole del php vi consente inoltre di poter trasformare con semplicità l'input in intero o float da poter elaborare successivamente.

Spero di essere stato d'aiuto a chi come me cercava di prendere input banalmente da tastiera su shell.

Alla prossima ;)
Posta un commento