Ti ringrazio per il consiglio. Ho provato a usare le sessioni e la prima impressione è che sia tutto ok. Non sapevo che in una variabile di sessione si potesse memorizzare un array. Infatti all'inizio mi dava errore quando andavo a fare il controllo sull'operatore ternario. Poi ci ho aggiunto altre due parentesi quadre per renderlo bidimensionale e come per magia ha funzionato.
Già così dimezzo le query.
Ho fatto così
codice:
// questa è la pagina del form con session_start() ovviamente
$_SESSION['centri'] = array();
$queryCentri = mysql_query("SELECT centro FROM centri order by idcentro") or die(mysql_error());
<?php
while ($row = mysql_fetch_assoc($queryCentri)) {
$_SESSION['centri'][] = $row['centro'];
echo "<option value=\"$row[centro]\">$row[centro]</option>";
} ?> ....
// e questa è la pagina che riceve i dati del form che fa il controllo
$centro = in_array($_POST['centro'],$_SESSION['centri']) ? $_POST['centro'] : exit('valore centro non ammesso');
Se qualcun altro mi conferma che questo è il modo migliore di procedere e che non ho tralasciato niente mi toglie una preoccupazione.