- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form contatti in Php
-
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.
-
Vuoi dire che: php funziona quindi il problema è di xoom?
Ci possono essere problemi se il file php lo faccio girare su altervista e lascio tutto il resto su xoom?
Aspettando che che xoom mi dia una risposta più decente...
-
Ciao a tutti...ciao portapipe come va?
avrei bisogno di rendere obbligatori i campi $ragionesociale, $email e $ info
Si potrebbe avere la soluzione integrata in questo codice?:)
Innanzitutto grazie
<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$email=$_POST['txtEmail'];
$info=$_POST['txtInfo'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
mail("nomedella@mail","Richiesta Di Informazioni", $tutticampi);
echo 'E-mail inviata con successo!!';
?>
-
potresti scrivere così
[PHP]
<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$email=$_POST['txtEmail'];
$info=$_POST['txtInfo'];
if ($ragionesociale) {
if ($info) {
if ($email) {
//questo funziona solo con PHP >= 5.2
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
mail("nomedella@mail","Richiesta Di Informazioni", $tutticampi);
echo 'E-mail inviata con successo!!';
} else
echo "email non corretta!";
} else
"non hai inserito la email!";
} else
"non hai inserito le info!";
} else
"non hai inserito la ragione sociale!";
?>
[/PHP]
-
Grazie mille Emulman....adesso provo subito:)
-
Ho provato ma non funziona...
evidentemente non ho una versione di php 5.2 :bho:
Infatti quando provo , mi esce solo una schermata bianca senza nessuna esecuzione, nemmeno una stringa di errore...nulla
Come potrei fare per le versioni precedenti?grazie in anticipo
-
Allora, ci sono molti modi per validare un form.
I migliori sono quelli scritti in javascript e i super belli in jQuery (seguendo le indicazioni riesci a creare cose molto belle con poca conoscenza).
Il sistema invece più semplice a mio avviso è fare un controllo sui campi.
Se il campo è uguale a "" (cioè nessun carattere) allora rimanda alla pagina del form con un messaggio.
Nella pagina form scrivi a video il messaggio mentre nella pagina invia metti il controllo:
[PHP]
//lo inserisci dove vuoi che compaia il messaggio
<?php
if($_GET['msg']){
echo $_GET['msg'];
}
?>
[/PHP]
In questo modo prenderà il messaggio dalla url solo se questo esiste.
Nella pagina di invio invece metti per ogni campo:
[PHP]
<?php
// qui dice: SE il campo txtRagioneSociale è uguale a nessun carattere
if($_POST['txtRagioneSociale']==""){
//allora reindirizzami alla pagina form passando la variabile msg tramite GET con il valore: Riempire tutti i campi obbligatori!
header("location:form.php?msg=Riempire tutti i campi obbligatori!");
}
?>
[/PHP]
Semplice no? Sono dei semplici controlli.
Se il campo è vuoto mi reindirizzi. Non c'è bisogno di specificare altro (SE blabla ALTRIMENTI blabla) perché a noi interessa che non sia vuoto. SE è vuoto allora rimandami alla pagina altrimenti continua con lo script.
Fai così per tutti i campi.
Se vuoi puoi personalizzare tutti i messaggi oppure ne fai uno unico per tutti, in questo caso allora fai un controllo esteso per risparmiare tempo e spazio:
[PHP]
<?php
// qui dice: SE il campo txtRagioneSociale è uguale a nessun carattere OPPURE (composto dalle due barre verticali) email OPPURE info sono uguali a nessun carattere
if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
//allora reindirizzami alla pagina form passando la variabile msg tramite GET con il valore: Riempire tutti i campi obbligatori!
header("location:form.php?msg=Riempire tutti i campi obbligatori!");
}
?>
[/PHP]Non è il sistema migliore ma è intuitivo e semplice per chi è alle prime armi!
-
<?php
// qui dice: SE il campo txtRagioneSociale è uguale a nessun carattere OPPURE (composto dalle due barre verticali) email OPPURE info sono uguali a nessun carattere
if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
//allora reindirizzami alla pagina form passando la variabile msg tramite GET con il valore: Riempire tutti i campi obbligatori!
header("location:form.php?msg=Riempire tutti i campi obbligatori!");
}
?>Direi che questo può andare bene.
Come viene integrato usando questo script?<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$email=$_POST['txtEmail'];
$info=$_POST['txtInfo'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
mail("[email protected]","Richiesta Di Informazioni", $tutticampi);
echo 'E-mail inviata con successo!!';grazie...
-
Se leggi bene il mio post c'è scritto.
Se non lo vedi comunque ci arrivi per logica: i file php vengono compilati (diciamo eseguiti) dall'alto in basso quindi il controllo che hai quotato andrà prima della funzione mail.
Puoi metterla anche all'inizio.
LEGGI BENE quello che ho scritto nel posto precedente e arrivaci da solo...
-
Ho provato e ci sono quasi riuscito.
Quando lascio i campi vuoti nel form e premo su INVIA? il messaggio (tutti i campi sono obbligatori) esce correttamente!
Il problema è che ilo messaggio parte ugualmente e nella mia posta elettronica, la email arriva logicamente priva di dati.
Come devo fare per evitare che il messaggio parta anche quando i campi sono vuoti?
Posto i 3 passaggi che ho fatto, per essere più preciso?1)Questa è la pagina del form in html presente sul sito:
<form action="formmail2.php" method="post" name="frmModulo" id="frmModulo" onSubmit="return Convalida()">
<table width="400"border="0"cellpadding="0"cellspacing="0"bgcolor="yellow">
<tr>
<td>Nome e cognome*: </td>
<td><input name="txtRagioneSociale"type="text"id="txtRagioneSociale"size="34"></td>
</tr>
<tr>
<td>Email*:</td>
<td><input name="txtEmail"type="text"id="txtEmail"size="34"></td>
</tr>
<tr>
<td valign="top">Messaggio:</td>
<td><textarea name="txtInfo"cols="27"rows="6"id="txtInfo"></textarea></td>
</tr>
<tr>
<td colspan="2">* Dati obbligatori </td>
</tr>
<tr align="right">
<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>2)Poi ho preparato un file che ho chiamato ?formmail2.php? , inserendoci questo codice
<?php
if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
header("location:form.php?msg=Riempire tutti i campi obbligatori!");
}
$ragionesociale=$_POST['txtRagioneSociale'];
$email=$_POST['txtEmail'];
$info=$_POST['txtInfo'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
mail("la [email protected]","Richiesta Di Informazioni", $tutticampi);
echo'E-mail inviata con successo!!';
?>Ed infine ho creato un altro file denominato ?form.php? e questo è il suo contenuto:
<?php
if($_GET['msg']){
echo $_GET['msg'];
}
?>Se non compilo nulla il messaggio (Riempire tutti i campi obbligatori) esce correttamente!
Se compilo tutto il form, il messaggio (email inviata con successo) esce correttamente
Il problema pare che sia solo come spiegato all? inizio, ovvero che il messaggio parte comunque anche con i campi vuoti?
Potresti postarmi per cortesia il codice corretto?Scusami , ma so duro!!
-
Di sicuro
Ci sei quasi andato vicino.
Il file form.php di cui parlavo era il file con il form, nel tuo caso il form in html (che diventerà in php con l'aggiunta del messaggio del GET).
Quindi sopra il form della pagina html (che rinominerai .php) inserisci quello che hai messo nella pagina form.php.
Per quanto riguarda il codice basta aggiungere un ALTRIMENTI e così invierà la mail SOLO SE i campi inseriti nella condizione non sono uguali a ""
[PHP]
<?php
if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
header("location:form.php?msg=Riempire tutti i campi obbligatori!");
}else{
$ragionesociale=$_POST['txtRagioneSociale'];
$email=$_POST['txtEmail'];
$info=$_POST['txtInfo'];
//se vai a capo quando apri gli apici singoli andrai a capo anche nella mail, quindi verrà tutto più ordinato:
$tutticampi='
Ragione Sociale: '.$ragionesociale.'
Email: '.$email.'
Info: '.$info;
mail("la [email protected]","Richiesta Di Informazioni", $tutticampi);
echo'E-mail inviata con successo!!';
}
?>
[/PHP]
Ho fatto una piccola modifica anche alla variabile tutticampi. E' commentata subito sopra.
ciaop.s. se ti sforzi a creare il codice sono contento di darti una mano, ma se devo scrivertelo tutto io allora non mi piace perché non impari e non si raggiunge lo scopo del forum. Sono felice che tu ci abbia provato. Non è più gratificante?
-
Ora è tutto ok...Il tuo aiuto è stato prezioso!