Ok guarda,
siccome sono anche io alle prime armi col php e non sapendo se ci fosse qualcosa di meglio in giro ho fatto in questo modo:
Ho una directory dove ho le immagini (le immagini del codice di controllo quindi: A, B, C, D, E, F e così via), poi nello script scelgo la lunghezza del codice esempio 5 apro la directory dove sono le immagini e metto tutti i nomi delle stesse .gif in un array che quindi conterrà a.gif b.gif e così via.
Chiudo la cartella immagini, faccio un for che si ripete il numero di immagini che vuoi cioè 5 come detto sopra.
Ora creo un numero random ad ogni for (numero che è massimo grande quante sono le immagini --> quindi se hai tutto l'alfabeto maiuscolo più i numeri [ho omesso 0 e O perchè sono simili e gli utenti si possono sbagliare] avrai un numero massimo pari a 33) quindi il numero corrisponde ad una pos nell'array (poi lo vedi nel codice sotto postato) e carico la prima immagine. Tutto questo per il numero di immagini che vuoi. Chiaramente poi avrai una stringa che non stampi a video con il codice cosìcchè te lo puoi portare avanti dopo il form e confrontarlo con quella inserita dall'utente. Comunque ecco il codice:
[PHP]
<?PHP
$dir="images/codice_controllo/"; //Directory di dove si trovano le immagini
$lunghezza_codice=5; //La lunghezza del codice di verifica
$handle = opendir($dir);
$i=0;
////////////////////////////////////////////////////////////////////////////////
while (false !== ($file = readdir($handle))) {
if(is_file($dir.$file)){
//Se siamo nell'if significa che è un file ora selezioniamo solo le gif
$estensione=strrchr($file,"."); //Mi tronca il file nel suo solo .estensione
$estensione=substr($estensione,1); //Mi toglie il punto che è il primo carattere
switch($estensione)
{
case "gif":
case "GIF":
$array_immagini*=$file;
$i++;
}//fine switch
}//fine if
}//fine while
closedir($handle);
for($i=0; $i<$lunghezza_codice; $i++)
{
$x=rand(0,32); //33 il numero totale di file
$url=$dir.$array_immagini[$x];
echo"<img src="$url" alt="" />";
$code*=substr("$array_immagini[$x]",0,1); //Inserisco in array_caratteri solo il carattere della relativa immagine
}
// metto il codice in una stringa
$codice="";
for($i=0; $i<$lunghezza_codice; $i++)
{
$codice=$codice.$code*;
}
?>
[/PHP]
Se vuoi ti dò lo zip con anche le immagini senza che te le crei tutte.
A me funziona poi vedi te se ti va bene o se lo ripudi