La soluzione delle sessioni mi piace abbastanza, perché non ti convince granché?
In effetti dipende da cosa vuoi ottenere.
Usando sessioni (e/o cookies) in questo modo, non solo impedisci il re-invio del modulo al ricaricamento della pagina... ma impedisci al client anche invii successivi di nuovi moduli, finché la sessione (o il cookie) non scade.
Con un re-indirizzamento, invece, impedisci il re-invio dei dati al ricaricamento, ma consenti al client di inviare un nuovo modulo successivamente (che di solito è il comportamento atteso). Non hai bisogno di creare una nuova pagina, il re-indirizzamento può portare alla pagina stessa.
Ma deve specificare come enctype text/plain nel modulo html ne consegue che $_POST sarà vuoto se non esiste chiave=valore o con l'aggiunta di & tra più valori, Dovrebbe recuperare con file_get_contents('php://input');
Non c'è motivo di specificare text/plain come enctype nel modulo HTML. Content-type dell'email ed enctype di un modulo sono concetti ortogonali tra loro.
se ricarico insistentemente la pagina mi arrivano millemila mail tutte uguali (sto facendo questa cosa delle sessioni proprio per evitare qualche simpatico troll).
Hai chiamato session_start prima di accedere al vettore $_SESSION?
Edit: Rispondendo anche all'ultimo messaggio:
Codice PHP:
if (!isset($_COOKIE[$appenainviato])) {
Probabilmente intendevi
Codice PHP:
if (!isset($_COOKIE["appenainviato"])) {
Inoltre:
Codice PHP:
$info='$persone $esperienza "/n" $descrizione "/n" $link "/n" $note';
dovrebbe essere
Codice PHP:
$info="$persone $esperienza \n $descrizione \n $link \n $note";