-
Form Html per Fanclub
Ho un piccolo problema..
Ho un sito web...devo fare una cosa molto semplice ma non so come realizzarlo:
In una delle mie pagine web che sono in HTML vorrei inserire un form con le seguenti Voci:
Nome*:
Cognome*:
Via:
Citta*:
Cap*:
Provincia*:
Professione:
Titolo di Studio:
Telefono*:
E-mail*:
Commenti:
Questo form dovrà essere spedito sia a Me che alla persona che lo compila..
Mi potete dare una mano?
-
Codice:
<?php
$nome = $_POST["nome"];
$cognome = $_POST["cognome"];
$via = $_POST["via"];
$citta = $_POST["citta"];
$cap = $_POST["cap"];
$provincia = $_POST["provincia"];
$professione = $_POST["professione"];
$titolo = $_POST["titolo"];
$telefono = $_POST["telefono"];
$mail = $_POST["mail"];
$commenti = $_POST["commenti"];
$destinatari = "$mail, ";
$destinatari .= "tuoindirizzo@tuoprovider.ext";
$oggetto = "a tua scelta";
$messaggio = "$nome\n$cognome\n$via\n$citta\n$provincia\n$professione\n$titolo\n$telefono\n$commenti";
$mail = mail($destinatari, $oggetto, $messaggio, "From: $mail");
if ($mail == 1) {
echo "Email inviata con successo!";
} else {
echo "Non è stato possibile inviare la mail";
}
?>
Dovrebbe funzionare ;)
Ovviamente devi impostare i parametri nell'HTML in questa maniera:
Codice:
<form action="mail.php" method="post">
Nome*: <input type="text" name="nome" /><br />
Cognome*: <input type="text" name="cognome" /><br />
</form>
e così via ;)
(ovviamente la pagina dove scriverai quel papiello contenuto tra i tag <?php e ?> andra salvato come .php... nello specifico, l'ho chiamato mail.php... te lo dico perché non so se lo sai ;))
-
Non mi spunta il pulsante invia...
-
Perché io sono un cretino e non te l'ho detto! XD
in fondo agli ultimi input, scrivi:
Codice:
<input type="submit" value="Invia" /> <input type="reset" value="Azzera" />
va scritto appena prima di </form>
-
Non mi funziona..
http://www.kristinkreuk.it/kristin/form.html
vedi in cosa sbaglio...:(
-
Hai scritto "congnome" anziché "cognome".
Poi il submit e il reset vanno ancora all'interno del form.
<form>
<input nome>
<input cognome>
<input submit> <input reset>
</form>
-
unica cosa...che non funge è la professione...
-
Scusa, hai ragione, ho sbagliato io a scrivere il codice PHP.
Ricontrolla il codice, perché ho messo uno spazio all'interno della parola professione, mentre non devono essercene ;)
Poi ti do un consiglio per l'area dei commenti. Ti conviene usare una <textarea>.
Codice:
<textarea cols="40" rows="3" name="commenti"></textarea>
Per esempio questa non è molto alta ma è sufficientemente larga da visualizzare abbastanza testo. Fai qualche prova anche in locale per renderti conto di quale sia la soluzione migliore ;)
-
Heartless482 sei un grande! Volevo chiederti una cosa...e per fare la verifica dei campi obbligatori? Cioè appena vengono inviati i dati lo script deve prima fare una verifica per vedere se tutti i campi obbligatori sono stati compilati...altrimenti non li invia. Come faccio a far fare questa verifica al form che ci hai sopra scritto?
-
Grazie per i complimenti ;)
Per fare il controllo io ho inserito un alert in JavaScript.
Per esempio, si fa il controllo sul mittente che deve essere scritto in una data maniera:
Codice:
if(ereg("^(.+)@(.+)\\.(.+)$",$mittente)) { } else {
echo "<script type=\"text/javascript\">alert('Si è verificato un errore:\ndevi specificare un mittente corretto.');history.go(-1)</script>";
exit;
}
Lo stesso vale per il destinatario (se è unico, perché impostato in configurazione, allora non ce n'è bisogno. Per l'oggetto, invece, o il messaggio, si può usare questa sintassi:
Codice:
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$oggetto)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo oggetto è obbligatorio.');history.go(-1)</script>";
exit;
}
Si può usare anche per il campo del messaggio adattando le variabili ;)
Ed è anche possibile aggiungere un tag <noscript></noscript> per chi non ha attivato il JavaScript. Per esempio si potrebbe dare un link per la pagina dalla quale si proveniva (che è unica) semplicemente mettendo un <a href="paginadellamail.html">Torna indietro</a>, anche se non ha lo stesso effetto del JavaScript.
Ovviamente si può tutto adattare ;)
Ciao!
-
Perfetto... e per assicurarmi che i campi obbligatori (quelli con l'asterisco *) siano stati compilati? Come faccio?
-
Proprio come ho scritto sopra. Basta questo controllo JavaScript per poter controllare che i campi obbligatori siano stati compilati :wink:
-
Heartless mi spieghi una cosa.. lo script:
Codice:
if(ereg("^(.+)@(.+)\\.(.+)$",$mittente)) { } else {
echo "<script type=\"text/javascript\">alert('Si è verificato un errore:\ndevi specificare un mittente corretto.');history.go(-1)</script>";
exit;
}
mis pieghi di preciso dove metterlo? è uno script HTML o PHP?
-
E' uno script PHP e lo devi mettere nella pagina che riceve i dati dal form (quella specificata nell'action del tag form).
-
Va posizionato appena dopo l'impostazione della variabile mittente.
Quindi più o meno così:
Codice:
$mittente = $_POST["mittente"];
if (ereg(eccetera));
:wink:
-
Si ma quello citato sopra vale solo per il mittente giusto (che nel caso del form sarebbe $mail)?
Quindi nel caso in cui i campi obbligatori fossero:
Nome*:
Cognome*:
Citta*:
Cap*:
Provincia*:
Telefono*:
E-mail*:
dovrò mettere :
<?php
$nome = $_POST["nome"];
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$nome)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo Nome è obbligatorio.');history.go(-1)</script>";
exit;
}
$cognome = $_POST["cognome"];
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$cognome)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo Cognome è obbligatorio.');history.go(-1)</script>";
exit;
}
$via = $_POST["via"];
$citta = $_POST["citta"];
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$citta)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo Città è obbligatorio.');history.go(-1)</script>";
exit;
}
$cap = $_POST["cap"];
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$cap)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo Cap è obbligatorio.');history.go(-1)</script>";
exit;
}
$provincia = $_POST["provincia"];
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$provincia)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo Provincia è obbligatorio.');history.go(-1)</script>";
exit;
}
$professione = $_POST["professione"];
$titolo = $_POST["titolo"];
$telefono = $_POST["telefono"];
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$telefono)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo Telefono è obbligatorio.');history.go(-1)</script>";
exit;
}
$mail = $_POST["mail"];
if(ereg("^(.+)@(.+)\\.(.+)$",$mail)) { } else {
echo "<script type=\"text/javascript\">alert('Si è verificato un errore:\ndevi specificare una mail corretta.');history.go(-1)</script>";
exit;
}
$commenti = $_POST["commenti"];
$destinatari = "$mail, ";
$destinatari .= "tuoindirizzo@tuoprovider.ext";
$oggetto = "a tua scelta";
$messaggio = "$nome\n$cognome\n$via\n$citta\n$provincia\n$profe s sione\n$titolo\n$telefono\n$commenti";
$mail = mail($destinatari, $oggetto, $messaggio, "From: $mail");
if ($mail == 1) {
echo "Email inviata con successo!";
} else {
echo "Non è stato possibile inviare la mail";
}
?>
Giusto così o c'è un modo + semplice?
-
Non ho capito esattamente cosa intendi.
Comunque questo codice implica che i campi segnati con l'asterisco vadano compilati esattamente.
Dimenticavo una cosa, se il mailer non dovesse funzionare, aggiungi queste righe:
Codice:
if (!isset($_POST["nome"])) { $_POST["nome"] = "");
puoi scriverlo prima di
Codice:
$nome = $_POST["nome"];
E fai lo stesso con tutte le altre variabili :wink: non sto a scrivertele tutte perché ci metterei una serata intera! XD
Comunque non c'è problema più semplice o più difficile, perché tanto non devi modificarlo ;)
L'unica cosa, ovviamente devi sostituire "tuoindirizzo@tuoprovider.ext" con la tua mail esatta e il contenuto di $oggetto con l'oggetto che vuoi venga visualizzato alla ricezione della mail. Che so, "Hai inserito i seguenti dati", oppure puoi anche fare una finezza: "Richiesta di iscrizione al club: $nome $cognome" o anche solo $nome :wink:
E così dovresti risolvere tutto :wink:
Se ci sono altri problemi, io continuerò a darti altri suggerimenti :wink:
Ciao!
-
Forse mi sono confuso...il codice che implica che i campi segnati con l'asterisco vadano compilati esattamente è questo??
if(ereg("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",$oggetto)) { } else {
echo "<script type=\"text/javascript\">alert('Il campo oggetto è obbligatorio.');history.go(-1)</script>";
exit;
}
e basta metterlo solo una volta? Anche perchè questo mi sembra valga solo per il parametro $oggetto della mail...
Quindi ricapitolando l'unica cosa che volevo sapere era il codice unico che permette di verificare che i campi obbligatori con l'asterisco siano compilati. Spero dia chiaro...
-
No, una cosa unica credo non sia fattibile. Per di più non ti conviene, perché tenendo un controllo separato per ogni campo obbligatorio si può leggere più facilmente quale potrebbe essere, dopo un errore, un campo non compilato.
Quel codice che hai postato è valido solo per la variabile oggetto.
Quello che hai scritto qui, invece, è perfetto.
Ti ripeto, però, che se il mailer non dovesse funzionare, dovresti aggiungere quella funzione isset.
Nel caso non funzioni proprio niente, ripasso tra un'oretta e ti posto il codice completo :wink: Poi dovrebbe andare (la speranza è quella :D).
-
Ciao, mi intrufolo nella discussione.
Nel primo codice php che scrivi ci sono le seguenti righe:
if ($mail == 1) {
echo "Email inviata con successo!";
} else {
echo "Non è stato possibile inviare la mail";
}
?>
Se il visitatore non inserisce la email, dovrebbe apparire "Non è stato possibile inviare la mail", giusto?
Ma a me non funziona e mi appare sempre il messaggio che la mail è stata inviata con successo. Hai un'idea del perchè?
Ti ringrazio .. purtroppo php non è il mio forte :-s
-
Veramente...indipendentemente dal fatto che il visitatore inserisca o no la propria mail (a meno che non diventi un campo obbligatorio) la mail verrà inviata ugualmente...il problema si pone se la mail inserita su mail.php fosse errata...a quel punto dovrebbe dire "non è stato possibile inviare la mail". Non ho fatto abbastanza prove...però credo sia così...
-
Sì. è proprio così!
Oddio come mi sento idiota !!!"""***
Grazie
-
Ho provaro a risolvere in questa maniera, vedete un po' se gira ;)
Codice:
<?php
if (!isset($_POST["nome"])) {$_POST["nome"] = "";}
if (!isset($_POST["cognome"])) {$_POST["cognome"] = "";}
if (!isset($_POST["via"])) {$_POST["via"] = "";}
if (!isset($_POST["citta"])) {$_POST["citta"] = "";}
if (!isset($_POST["cap"])) {$_POST["cap"] = "";}
if (!isset($_POST["provincia"])) {$_POST["provincia"] = "";}
if (!isset($_POST["professione"])) {$_POST["professione"] = "";}
if (!isset($_POST["titolo"])) {$_POST["titolo"] = "";}
if (!isset($_POST["telefono"])) {$_POST["telefono"] = "";}
if (!isset($_POST["mail"])) {$_POST["mail"] = "";}
if (!isset($_POST["commenti"])) {$_POST["commenti"] = "";}
$nome = $_POST["nome"];
$cognome = $_POST["cognome"];
$via = $_POST["via"];
$citta = $_POST["citta"];
$cap = $_POST["cap"];
$provincia = $_POST["provincia"];
$professione = $_POST["professione"];
$titolo = $_POST["titolo"];
$telefono = $_POST["telefono"];
$mail = $_POST["mail"];
$commenti = $_POST["commenti"];
$destinatari = "$mail, ";
$destinatari .= "tuoindirizzo@tuoprovider.ext";
$oggetto = "a tua scelta";
if ($nome = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica il nome!\");history.go(-1)</script>"
} else {}
if ($cognome = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica il cognome!\");history.go(-1)</script>";
}
if ($via = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica l'indirizzo!\");history.go(-1)</script>";
}
if ($citta = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica la città!\");history.go(-1)</script>";
}
if ($cap = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica il CAP!\");history.go(-1)</script>";
}
if ($provincia = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica la provincia!\");history.go(-1)</script>";
}
if ($professione = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica la tua professione!\");history.go(-1)</script>";
}
if ($titolo = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica il tuo titolo!\");history.go(-1)</script>";
}
if ($telefono = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica il numero di telefono!\");history.go(-1)</script>";
}
if ($mail = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica l'indirizzo mail!\");history.go(-1)</script>";
}
if ($commenti = NULL) {
echo "<script type=\"text/javascript\" language=\"javascript\">alert(\"Specifica un commento!\");history.go(-1)</script>";
}
$messaggio = "$nome\n$cognome\n$via\n$citta\n$provincia\n$professione\n$titolo\n$telefono\n$commenti";
@$mail = mail($destinatari, $oggetto, $messaggio, "From: $mail");
if ($mail == 1) {
echo "Mail inviata correttamente\n<a href=\"http://www.kristinkreuk.it\">Torna al sito</a>";
} else {
echo "La mail non è stata inviata in seguito ad un errore";
}
?>