Il nostro buon vecchio Php ci viene in aiuto anche quando le nostre esigenze sono diverse da quelle solite di una webapp.
Utilizzando la piattaforma Moodle ho avuto l’esigenza di somministrare in forma anonima un questionario a circa 1800/1900 utenti .
Oddio !!! mi devo creare a mano quasi 2000 username, password, nomi fittizzi , cognomi fittizzi ecc. ecc. … No, php ci pensa!
Visto che Moodle è in grado di importare utenti tramite file di tipo .cvs mi faccio la mia bella paginetta che in un colpo solo mi crea il sudetto file con gli utenti .
Per chi fosse a digiuno di moodle rimando a questa guida
[code language=”php”]
<?php
//funzione per generare la nostra password casuale
function PasswordCasuale($lunghezza) {
//variabili che contengono i caratteri da inserire nella password
$caratteri_disponibili = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$numeri_disponibili = "0123456789";
$caratteri_speciali = "@#.!";
//prelevo un numero e un carattere speciale random
$n = substr(str_shuffle($numeri_disponibili), 0, 1);
$cs = substr(str_shuffle($caratteri_speciali), 0, 1);
//prelevo random un numero di caratteri pari al valore di $lunghezza meno 2 e aggingo il numero e il carattere speciale
$password = substr(str_shuffle($caratteri_disponibili), 0, ($lunghezza – 2)) . $n . $cs;
//il valore che restituisce la funzione
return $password;
}
if (isset($_POST[‘corso’])) {
$contenuto = "";
//prima riga del file csv contiene i nomi delle colonne
$fieldname = "username,password,firstname,lastname,email,lang,course1\n";
$contenuto .= $fieldname;
$quanti_utenti = $_POST[‘quanti_utenti’];
$corso = $_POST[‘corso’];
$lang = $_POST[‘lang’];
$file = "gemera_utenti_" . $corso;
//ciclo che aggiunge tutte righe con gli utenti
for ($i = 0; $i < $quanti_utenti; $i++) {
$contenuto .= "user$corso$i," . PasswordCasuale(8) . ",name-$i,surname-$i,%u,$lang,$corso\n";
}
//meta-informazioni che vengono scambiate tra il server ed il client.
//vengono richiamate prima di tutti gli output
header("Content-Type: application/text");
header("Content-Disposition: attachment; filename=$file.csv");
print $contenuto;
}else{
?>
<!DOCTYPE html>
<head>
<title>Genera utenti casuali per moodle</title>
</head>
<body>
<form method="post">
Corso:
<input type="text" name="corso" />
<br>
Numero utenti:
<input tipe="number" name="quanti_utenti"/><br>
Lingua:<select name="lang">
<option value="it">Italiano</option>
<option value="en">Inglese</option>
</select>
<input type="submit" value="genera utenti" />
</form>
</body>
<?php } ?>
[/code]