- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form contatti in Php
-
ok fatto grazie
-
Ciao portapipe scusami se rompo...ma potresti dare un occhiata a questa cosa....(prometto che è l' ultima:))....
questo è il form nel sito:
<form action="formmailmotori.php" method="post" name="frmModulo" id="frmModulo" onSubmit="return Convalida()">
<table width="450"border="0"cellpadding="0"cellspacing="0"bgcolor="white">
<tr>
<td>Nome e cognome*: </td>
<td><input name="txtRagioneSociale"type="text"id="txtRagioneSociale"size="34"></td>
</tr>
<tr>
<td>Comune*:</td>
<td><input name="txtComune"type="text"id="txtComune"size="34"></td>
</tr>
<tr>
<td>Provincia:</td>
<td><input name="txtProvincia"type="text"id="txtProvincia"size="34"></td>
</tr>
<tr>
<td>Email*:</td>
<td><input name="txtEmail"type="text"id="txtEmail"size="34"></td>
</tr>
<tr>
<td>Telefono*:</td>
<td><input name="txtTelefono"type="text"id="txtTelefono"size="34"></td>
</tr>
<tr>
<td><input type="radio" name="radio_1" value="valore_1"> Pacchetto Base </td>
</tr>
<tr>
<td><input type="radio" name="radio_1" value="valore_2"> Pacchetto Medio </td>
</tr>
<tr>
<td><input type="radio" name="radio_1" value="valore_3"> Pacchetto Avanzato </td>
</tr>
<tr>
<td valign="top">Informazioni:</td>
<td><textarea name="txtInformazioni"cols="28"rows="6"id="txtInformazioni"></textarea></td>
</tr>
<tr>
<td colspan="2">* Dati obbligatori </td>
</tr>
<tr align="center">
<td colspan="2"><input name="InviaModulo"type="submit"id="InviaModulo"value="Invia">
<input name="Reimposta"type="reset"id="Reimposta"value="Reimposta"></td>
</tr>
</table>
</form>mentre questo è il file in php:
<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$telefono=$_POST['txtTelefono'];
$pacchetto base=$_POST['radio_1'];
$pacchetto medio=$_POST['radio_1'];
$pacchetto avanzato=$_POST['radio_1'];
$informazioni=$_POST['txtInformazioni'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , ' Comune: '.$comune.' , 'Provincia: '.$provincia.' , 'Email: '.$email.' , 'Telefono: '.$tel.' , 'Pacchetto Base: '.$radio_1.' , 'Pacchetto Medio: '.$radio_1.' , 'Pacchetto Avanzato: '.$radio_1.' , 'Informazioni: '.$informazioni;
mail("tuoindirizzo@email","Oggetto email", $tutticampi);
echo "Il messaggio è stato inviato correttamente! Riceverai una risposta al più presto...grazie! Per ritornare al sito clicca la freccia indietro nel tuo browser.";
?>Il problema è che il file in php molto probabilmente è sbagliato ,( secondo me è il "radio" che non va bene ) , quando compilo il form e clicco su "invia" mi esce questo errore:
Parse error: syntax error, unexpected T_STRING in /home/mhd-01/indirizzowebdelmiosito/htdocs/formmailmotori.php on line 9
Mi potresti scrivere il file in php giusto perchè possa funzionare?
Grazie in anticipo portapipe....
-
Innanzi tutto non puoi usare gli spazi per dichiarare variabili, per questo si usano gli under-score _ .
Poi la variabile radio_1 sarà una sola. Creare 3 variabili con lo stesso valore non ti serve a nulla, in quanto l'utente SCEGLIE UNA OPZIONE tra tre, quindi il valore sarà solo uno.
Piuttosto puoi fare un controllo sul valore che arriva e scrivi di conseguenza quello che ti serve:
Attento comunque che hai chiamato pacchetto base (quello con lo spazio) medio e avanzato il radio_1 ma nella variabile tutticampi richiami la variabile radio_1, non pacchetto base, medio e avanzato!!!Fai attenzione a queste cose (lo spazio potevi non saperlo ma alle variabili devi fare attenzione!!).
Una variabile è un puntatore per un valore che vuoi:
$nome="Paolo";
ogni volta che voglio richiamare il mio nome preferito nella pagina richiamerò $paolo .
Così fai con i pacchetti.
[PHP]
<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$telefono=$_POST['txtTelefono'];
//In base al valore che ha radio_1 scrivi il pacchetto corrispondente
$radio=$_POST['radio_1'];
if($radio="valore_1"){
$pacchetto="Pacchetto base scelto";
}elseif($radio="valore_2"){
$pacchetto="Pacchetto medio scelto";
}elseif($radio="valore_3"){
$pacchetto="Pacchetto avanzato scelto";
}
//poi inseriremo la variabile pacchetto che scriverà il tipo di pacchetto scelto
$informazioni=$_POST['txtInformazioni'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , '.$pacchetto.' , Informazioni: '.$informazioni;
mail("tuoindirizzo@email","Oggetto email", $tutticampi);
echo "Il messaggio è stato inviato correttamente! Riceverai una risposta al più presto...grazie! Per ritornare al sito clicca la freccia indietro nel tuo browser.";
//per la freccia indietro puoi mettere un bottone con il parametro onclick javascript history back
?> [/PHP]Ciao
edit all'ultimo momento! E' scritto veramente male amico mio. Gli apici! Erano quasi tutti invertiti!
-
grazie portapipe....ecco perchè il mio non funzionava...
era scandaloso:oIn effetti inserendo un bottone per tornare indietro sarebbe meglio...ma come faccio?
-
<input type="button" value="Indietro" onClick="javascript:history.back()" name="button">
Cerca in google se hai bisogno. Se non trovi chiedi qui
-
portapipe...
ricordi lo script in php dell' ultimo form con l' elemento radio....
(il form in html e il file php sono nelle nostre ultime discussioni)
precisamente quello che mi hai fatto tu:<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$tel=$_POST['txtTel'];
//In base al valore che ha radio_1 scrivi il pacchetto corrispondente
$radio=$_POST['radio_1'];
if($radio="valore_1"){
$pacchetto="Pacchetto base scelto";
}elseif($radio="valore_2"){
$pacchetto="Pacchetto medio scelto";
}elseif($radio="valore_3"){
$pacchetto="Pacchetto avanzato scelto";
}
//poi inseriremo la variabile pacchetto che scriverà il tipo di pacchetto scelto
$informazioni=$_POST['txtInformazioni'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , '.$pacchetto.' , Informazioni: '.$informazioni;
mail("tuoindirizzodiposta","Oggetto Email", $tutticampi);
echo "Il messaggio è stato inviato correttamente! Riceverai una risposta al più presto...grazie! Per ritornare al sito clicca la freccia indietro nel tuo browser.";
//per la freccia indietro puoi mettere un bottone con il parametro onclick javascript history back
?>Facendo delle prove ho visto che spuntando nel sito i radio pacchetto medio o pacchetto avanzato nella mail mi esce sempre pacchetto base ...come mai?
Grazie portapipe:)
-
Dannate distrazioni!
Adesso sono pieno di lavoro quindi scrivo volentieri nei forum ma faccio degli stupidi errori!p.s. Metti il codice tra tag [ PHP ] se no non viene formattato ed è più difficile aiutarti. C'è il tasto apposta.
Basta che selezioni il testo in php e clicchi sul bottone in alto alla sinistra di youtube.[PHP]<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$tel=$_POST['txtTel'];
//In base al valore che ha radio_1 scrivi il pacchetto corrispondente
$radio=$_POST['radio_1'];
//qui c'era $radio=".." ma così si riscrive la variabile, non si usa come condizione! Per fare ciò bisogna mettere due uguali
if($radio=="valore_1"){
$pacchetto="Pacchetto base scelto";
}elseif($radio=="valore_2"){
$pacchetto="Pacchetto medio scelto";
}elseif($radio=="valore_3"){
$pacchetto="Pacchetto avanzato scelto";
}
//poi inseriremo la variabile pacchetto che scriverà il tipo di pacchetto scelto
$informazioni=$_POST['txtInformazioni'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , '.$pacchetto.' , Informazioni: '.$informazioni;
mail("tuoindirizzodiposta","Oggetto Email", $tutticampi);
echo "Il messaggio è stato inviato correttamente! Riceverai una risposta al più presto...grazie! Per ritornare al sito clicca la freccia indietro nel tuo browser.";
//per la freccia indietro puoi mettere un bottone con il parametro onclick javascript history back
?> [/PHP]
-
Ciao a tutti,
sei stato molto chiaro Portapipe. Mi sai indicare che differenza c'è tra recuperare le variabili tra $_POST e $_REQUEST?
Ho seguito i tuoi consigli, inizialmente su xoom andava, ora non mi arriva più ne con $_POST ne $_REQUEST. Se lo stesso formmail lo carico su altervista funziona cia con $_POST che con $_REQUEST.Grazie
-
la risposta è semplice:
POST fa parte delle REQUEST, così come GET e i COOKIE stessi.
Quindi con REQUEST richiami indistintamente la variabile che ha quel nome.
Quindi se salvi un nome in un POST lo puoi recuperare con POST e REQUEST, così come l'id di un prodotto nella URL lo puoi recuperare con GET e REQUEST.
Se però hai un POST con una variabile di nome "frase" e un COOKIE di nome "frase" REQUEST da problemi (non ricordo se ti prende il primo che trova, tutti e due o da errore) però si cerca di specificare sempre il metodo di recupero.
REQUEST è sconsigliato, soprattutto se lo impari come metodo standard.
Usa per ogni cosa il suo corrispettivo e non avrai mai confusione!Per il problema di xoom non saprei.
Magari hai sbagliato i parametri del form, oppure hai scritto male i nomi delle variabili POST... controlla sempre ogni parola, ti basta una virgola per vedere un sito ultraipermegacomplesso, costosissimo e totalmente funzionante convertirsi ad una semplice pagina bianca.
All'inizio ti pigliano dei colpi assurdi ma prendendo padronanza sempre più con il linguaggio capisci subito dove può essere l'errore e come risolverlo (non è sempre così ma almeno sei consapevole che c'è una virgola di troppo da scovare).
-
Molto chairo. Ti posto il mio file php, riesci a darmi qualche consiglio...
<?
$nome=$_POST[nome];
$testo=$_POST[testo];
$email=$_POST[mail];
$dest="xxxx";
mail($dest,$nome,$testo,$email);
print ("E-Mail inviata con successo.")
?>Alcuni mi dicono che non va bene, ma allora perchè su altervista funziona? Cosa c'è di sbagliato?
Grazie
-
la versione corretta è la seguente:
[PHP]
<?php
$dest=$_POST['email_destinatario'];
$oggetto=$_POST['oggetto_email'];
$email=$_POST['mail'];
if (mail($dest,$oggetto,$email))
print ("E-Mail inviata con successo.");
else
print ("Errore nell'invio");
?>
[/PHP]
-
Alcuni server non leggono correttamente il <? per l'apertura di php.
Per sicurezza è sempre meglio mettere <?php , così sei sicuro che almeno quello non ti da errore.
Per quanto riguarda il recupero delle variabili, emulman ha scritto bene.
Quando vuoi recuperare variabili, il nome va inserito tra apici singoli.
[PHP]<?
$nome=$_POST['nome'];
$testo=$_POST['testo'];
$email=$_POST['mail'];
$dest="xxxx";
mail($dest,$nome,$testo,$email);
print ("E-Mail inviata con successo.");
?>[/PHP]
In questo caso invia il messaggio a video anche se l'email non è stata inviata, ma basta che fai un controllo appena la metti online e sei tranquillo, anche se è sempre meglio far fare dei controlli ad ogni funzione cruciale.
Fammi sapere!
-
Ho messo: <?php e recupero le variabili tra singoli apici. Con Altervista funziona correttamente come prima. Con Xoom non funziona, ho provato anche su altra mail, nello spam, ma niente. La cosa stranissima è che prima funzionava.
Vi è mai capitato qualcosa del genere?
Grazie per disponibilità
-
Che ti posso dire... può essere un aggiornamento del software o cose del genere ma dubito che uno script base così crei problemi.
Prova a postare tutto il codice.
-
Html:
<form action="./mail.php" method="POST">
<table border="0">
<tr>
<td>Nome</td>
<td><input type="text" name="Nome" size="30"></td>
</tr>
<tr>
<td>Età</td>
<td><input type="text" name="Anni" size="5"></td>
</tr>
<tr>
<td>Città</td>
<td><input type="text" name="City" size="30"></td>
</tr>
<tr>
<td>Indirizzo</td>
<td><input type="text" name="Address" size="30"></td>
</tr>
<tr>
<td valign="top">Note</td>
<td><textarea rows="6" name="Note" cols="50"></textarea></td>
</tr>
<tr>
<td colspan="2" valign="bottom" align="center" height="30">
<input type="submit" value="Invia">
<input type="reset" value="Cancella"></td>
</tr>
</table>
</form>php:
<?php
$to = "[email protected]";
$subject = "Modulo proveniente dal sito";
$body = "Contenuto del modulo:\n\n";
$body .= "Nome: " . trim(stripslashes($_POST['Nome'])) . "\n";
$body .= "Età: " . trim(stripslashes($_POST['Anni'])) . "\n";
$body .= "Città: " . trim(stripslashes($_POST['City'])) . "\n";
$body .= "Indirizzo: " . trim(stripslashes($_POST['Indirizzo'])) . "\n";
$body .= "Note: " . trim(stripslashes($_POST['Note'])) . "\n";
$headers = "From: Modulo utenti[email protected]";
if(@mail($to, $subject, $body, $headers)) { // SE L'INOLTRO È ANDATO A BUON FINE...
echo "La mail è stata inoltrata con successo.";
} else {// ALTRIMENTI...
echo "Si sono verificati dei problemi nell'invio della mail.";
}
?>Se uso questo mi restitusce l'errore... c'è modo di avere dettagli sull'errore?
-
Per fare qualsiasi tipo di test, basta che crei due file semplicissimi.
Nell'html crei un form con un campo che avrà come name, per esempio, "nome", il method POST e alla fine del form un pulsante submit. Nella pagina php una semplice riga che stampa a video il nome immesso nel form con:
<?php echo $_POST['nome']; ?>
Se così funziona vuol dire che sbagli qualcosa sul codice.Ma poi dici che c'è un errore... cosa dice? Qual'è? Gli errori sono la traccia da seguire. Difatti se nel codice ci sono delle chiocciole @ davanti alle funzioni. La @ serve per non stampare a video gli errori, quindi per capire che succede vanno tolte.
-
Test fatti:
- Html con solo il campo nome: funzionante.
- Se tolgo la @ continua a darmi la stringa che metto nell'echo.
- Se non metto la stringa echo mi da pagina bianca, ma email non arriva.
- Se il formail (caricato su xoom) lo faccio puntare al php su xoom non va.
- Se il formail (caricato su xoom) lo faccio puntare al php caricato su altervista la mail mi arriva, (file php identici).
Ci possono essere problemi se il file php lo faccio girare su altervista e lascio tutto il resto su xoom?
Anche se vorrei risolvere sto problema fastidioso.
-
Ma poi dici che c'è un errore... cosa dice? Qual'è?
Potresti fare così ma non riesco a capire:- Html con solo il campo nome: funzionante.
Mica è quello che ti ho detto di fare io. Rileggi bene e poi dimmi... rispondi a tutto però!
- Html con solo il campo nome: funzionante.
-
Come errore mi appare quello che metto io nella stringa echo, niente di più (nel caso sopra: Si sono verificati dei problemi nell'invio della mail.)
Se tolgo la stringa echo per l'errore mi restituisce pagina bianca.
-
Come errore mi appare quello che metto io nella stringa echo, niente di più (nel caso sopra: Si sono verificati dei problemi nell'invio della mail.)
Se tolgo la stringa echo per l'errore mi restituisce pagina bianca.Guarda che echo equivale a "Scrivimi la stringa a video" quindi se scrive quello che hai scritto è corretto.
La funzione mail la si vede dopo che abbiamo stabilito che funziona tutto.Se l'errore che dici tu è quello che scrive quello che invii dal form a video allora php funziona correttamente.