INDICE

INVIARE IL CONTENUTO DI UN FORM A DUE INDIRIZZI DIVERSI

Ecco la domanda posta dal lettore:
"Io voglio che il mio form, cliccando su invia, venga mandato a 2 indirizzi e-mail, il mio e a quello del richiedente. Per fare questo basta che io separi con un punto e virgola i due indirizzi, così: action="mailto: indirizzo_1;indirizzo_2".Così a me va, ma il problema è che io conosco il mio indirizzo ma, ovviamente, non conosco ancora l'indirizzo del richiedente, che varia da richiesta a richiesta. Io ho programmato un poco in C e l'idea che ho avuto (ma che non riesco ad attuare) è: faccio riempire all'utente un campo obbligatorio con il suo indirizzo, tale indirizzo lo memorizzo in una variabile "mail" e quando lo stesso utente clicca su invia la mail va al mio indirizzo (fisso) e all'indirizzo contenuto nella variabile mail. Come si può fare?"
Spieghiamo meglio il problema: quando si dichiara un form, bisogna specificare subito, nel codice html, gli indirizzi dei destinatari, ed è quindi impossibile creare un form che invii del testo a un indirizzo da inserire nel form stesso. L'unica soluzione è memorizzare in anticipo, in una variabile, gli indirizzi dei destinatari, e poi creare il form, attraverso un opportuno codice javascript.

Vediamo più in dettaglio i passi da seguire:

  1. Si crea un primo form, che, attenzione, non invia dati, ma serve solo a memorizzare nome, cognome, indirizzo e-mail del destinatario e il testo che si vuole inviare. Un esempio potrebbe essere il seguente:

    Nome e cognome
    E-Mail

  2. Il bottone "CONVALIDA" lancia una funzione javascript, che crea "dal nulla" un nuovo form simile al precedente, ma con alcune importanti differenze:
Nell'esempio, il form è stato inserito con il seguente codice:
<form name="primo" action = "" method="get">
NOME E COGNOME <input type="text" name="nome" maxlength="20" size="20"><br>
E-Mail <input type="text" name="posta" maxlength="20" size="20"><br>
<textarea name="testo" rows="6" cols="40">Scrivi qui un breve messaggio </textarea>
<input type="button" name="Invia" value="CONVALIDA" onClick="inizia()">
</form>
Osserviamo esplicitamente come il method del form sia get; il tasto "CONVALIDA" infatti serve solo ad aprire una nuova pagina.
Fra i tags <HEAD> ed </HEAD> inseriamo ora il seguente codice:

<script language="JavaScript">Dichiarazione del fatto che si sta inserendo del codice JavaScript
function inizia() {Dichiarazione della funzione che ci permette di ottenere il risultato
cn=eval("this.primo.nome.value")Quanto inserito dall'utente nella casella di testo "nome", all'interno del form "primo", viene memorizzato nella variabile "cn". Il nome di questa variabile, come delle altre, può essere scelto a piacere. Noi abbiamo scelto "cn" dalle iniziali di "cognome nome"
em=eval("this.primo.posta.value")Quanto inserito dall'utente nella casella di testo "posta", all'interno del form "primo", viene memorizzato nella variabile "em". Abbiamo scelto il nome "em" dalle iniziali di "e-mail"
scritto=eval("this.primo.testo.value")Quanto inserito dall'utente nell'area di testo "testo", all'interno del form "primo", viene memorizzato nella variabile di nome "scritto".
mio="mailto:webmaster@webfract.it;" +emOsserviamo con attenzione questa riga di codice: in essa viene attribuito alla variabile di nome "mio" l'azione che dovrà eseguire l'invio del form. Il form deve essere spedito al webmaster del sito ed all'utente stesso.
tipo="text/plain"Attribuisce alla variabile di nome "tipo" l'attributo text/plain
scrivi=""Inizializza la variabile di nome "scrivi"
scrivi="<html><body>Ecco ciò che sarà inviato:<form action="+mio+" method=post ENCTYPE= "+tipo+" ><textarea readonly name=testo1 rows=6 cols=40 >NOME E COGNOME "+cn+" e-mail "+em+" Messaggio: "+scritto+"</textarea></p><p><input type=submit name=Invia value=INVIA> <input type=button name=indietro value=INDIETRO onClick='javascript:history.go(-1)'> </center></form><
/body></html>"
Nella variabile scrivi viene memorizzato l'intero codice HTML della pagina che verrà creata. Notare che le parti fisse vengono scritte fra virgolette, mentre le parti variabili vengono aggiunte attraverso il + In questo modo si crea una concatenazione fra le varie stringhe. Notare la parola chiave readonly: serve ad impedire che l'utente corregga il proprio indirizzo di posta elettronica perchè, qualora fosse corretta l'e-mail, la posta sarebbe comunque inviata all'indirizzo inserito nel primo form.
Se si vuole effettuare una correzione, occorre tornare alla pagina precedente facendo clic sul bottone di nome "INDIETRO".
risultato=window.open('',target="_self")La variabile risultato definisce un oggetto di apertura di una nuova finestra. L'aggiunta di target="_self", facoltativa, permette di aprire la finestra nella stessa pagina del form.
risultato.document.write(scrivi)La stringa di testo che è stata predisposta e memorizzata nella variabile scrivi viene scritta attraverso il comando document.write nell'oggetto risultato. JavaScript infatti memorizza anche i comandi in una variabile.
risultato.document.close()Viene comunicato al browser di chiudere la finestra dell'oggetto risultato
}Parentesi di chiusura della funzione
</script>Fine script.
NOTA: come in tutti gli scripts javascript, occorre fare molta attenzione alla sintassi per non generare un messaggio d'errore. In particolare, quando si genera il codice per creare la nuova pagina, non si può andare a capo.


INDICEINDIETRO

©2002 www.webfract.it