Ottimizzare Form PHP

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
i messaggi non li avevo aggiunti
PHP:
<input type="checkbox" name="privacy" id="privacy" checked/>Acconsento al...<br/>
        <input type="checkbox" name="termini" id="termini" checked />Ho letto... <br/>
        <?php
        if (isset($obbligatorio['privacy'])) {
            echo "<span>" . $obbligatorio['privacy'] . "</span>";
        }
        if (isset($obbligatorio['termini'])) {
            echo "<span>" . $obbligatorio['termini'] . "</span>";
        }
        ?>
dovrai inserirne uno per ogni campo select o check che metterai nel form
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Hai perfettamente ragione :dormo:

I messaggi di errore sono dei campi compaiono a destra di colore rosso, i messaggi delle checkbox compaiono in nero e spostano i bottoni ANNULLA e INVIA

PHP:
        <input type="checkbox" name="privacy" id="privacy" /checked>Acconsento al...<br/>
 <?php 
        if (isset($obbligatorio['privacy'])) { 
            echo "<span>" . $obbligatorio['privacy'] . "</span>"; 
        } 
?>
        <input type="checkbox" name="termini" id="termini" /checked>Ho letto... <br/> 
 <?php 
    if (isset($obbligatorio['termini'])) { 
    echo "<span>" . $obbligatorio['termini'] . "</span>"; 
        } 
?>

Posso modificare il colore e la posizione se utilizzo il foglio di stile?

Ora è pronto per collegarlo al database?
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Come dicevo all'inizio devo collegare il form al database mysql e deve avere un controllo sugli input, manca qualcosa?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
puoi aumentare i controlli qui
PHP:
${$_POST[$key]} = htmlentities($value);
in questo modo
PHP:
${$_POST[$key]} = strip_tags(htmlentities($value));
oppure richiamando una funzione tipo questa
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Grazie, dovrei anche mettere un controllo sui caratteri? Per esempio il nome dovrà essere composto da minimo 3 caratteri, l'email [email protected], il numero di telefono numerico però c'è anche il prefisso quindi potrebbe servire il punto o il trattino, più o meno ci siamo?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
dovrai aggiungere i controlli all interno del ciclo del post
ti faccio un esempio
PHP:
// ciclo del POST   
    foreach ($_POST as $key => $value) {
        // se non è vuoto   
        if (!empty($value)) {
            
            if ($key == "email") {
                if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
                    $obbligatorio[$key] = "Mail non valida";
                }
            }
            if ($key == "telefono") {
                if (!is_numeric($value)) {
                    $obbligatorio[$key] = "Il telefono deve essere numerico";
                }
            }
            ${$_POST[$key]} = strip_tags(htmlentities($value));
        } else {
            $obbligatorio[$key] = "\n Il campo $key e' obbligatorio";
        }
    }
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Ciao, troppo gentile ma credo che avrò ancora bisogno di aiuto.

L'email arriva ma il contenuto è vuoto, cosa manca?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
riposta il codice completo come lo hai scritto tu e vediamo
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Ecco il codice completo

PHP:
<?php 
// se hanno premuto il pulsante submit    
if (isset($_POST['submit']) && $_POST['submit'] == "INVIA") { 
    // inizializzo campi obbligatori    
    $obbligatorio = array(); 
    // eliminiamo il post submit     
    unset($_POST['submit']); 
    // array check obbligatorie    
    if (!isset($_POST['privacy'])) { 
        $obbligatorio['privacy'] = "E' obbligatorio accettare le condizioni sulla privacy"; 
    } 
    if (!isset($_POST['termini'])) { 
        $obbligatorio['termini'] = "E' obbligatorio accettare i termini"; 
    } 
    // ciclo del POST    
    foreach ($_POST as $key => $value) { 
        // se non è vuoto    
        if (!empty($value)) { 
           if ($key == "email") {
                if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
                    $obbligatorio[$key] = "Indirizzo E-mail non valido";
                }
            } 
                ${$_POST[$key]} = strip_tags(htmlentities($value));
        } else {
            $obbligatorio[$key] = "\n Il campo $key e' obbligatorio";
        }
    }

    if (count($obbligatorio) == 0) { 
        $oggetto = "Prova"; 
        $testo_del_messaggio.="Nome: $nome\n"; 
	$testo_del_messaggio.="Email: $email\n"; 
        $testo_del_messaggio.="Provincia: $provincia\n";
	$testo_del_messaggio.="Oggetto: $oggetto\n"; 
        $testo_del_messaggio.="Messaggio: $messaggio\n"; 
        $to = "@@@"; 
        $from = $email;
	$fromname = $nome; 
        $result = mail($to, $oggetto, $testo_del_messaggio); 
        if ($result) { 
            echo "<p>Email inviata</p>"; 
        } else { 
            echo " <p>Error.<br>Impossibile inviare l'email.</p>"; 
        } 
    } 
} 
?> 
<body> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> 

        <label>Nome 
            <input type="text" name="nome" placeholder="Nome e Cognome"/> 
            <?php 
            if (isset($obbligatorio['nome'])) { 
                echo "<span>" . $obbligatorio['nome'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/>
<label>E-mail 
            <input type="text" name="email" placeholder="Indirizzo E-mail valido"/> 
            <?php 
            if (isset($obbligatorio['email'])) { 
                echo "<span>" . $obbligatorio['email'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/> 
        <label>Provincia 
            <select name="provincia"> 
                <option value="">Seleziona</option> 
                <option value="VE">VE</option> 
                <option value="MI">MI</option> 
                <option value="PA">PA</option> 
            </select> 
            <?php 
            if (isset($obbligatorio['provincia'])) { 
                echo "<span>" . $obbligatorio['provincia'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/>
 <label>Oggetto 
            <select name="oggetto"> 
                <option value="">Seleziona</option> 
                <option value="1">1</option> 
                <option value="2">2</option> 
                <option value="3">3</option> 
            </select> 
            <?php 
            if (isset($obbligatorio['oggetto'])) { 
                echo "<span>" . $obbligatorio['oggetto'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/> 
        <label>Messaggio * 
            <br/> 
            <textarea cols="50" rows="10" name="messaggio"/></textarea> 
            <?php 
            if (isset($obbligatorio['messaggio'])) { 
                echo "<span>" . $obbligatorio['messaggio'] . "</span>"; 
            } 
            ?> 
        </label><br/> 
        <input type="checkbox" name="privacy" id="privacy" /checked>Acconsento al...<br/>
 <?php 
        if (isset($obbligatorio['privacy'])) { 
            echo "<span>" . $obbligatorio['privacy'] . "</span>"; 
        } 
?>
        <input type="checkbox" name="termini" id="termini" /checked>Ho letto... <br/> 
 <?php 
    if (isset($obbligatorio['termini'])) { 
    echo "<span>" . $obbligatorio['termini'] . "</span>"; 
        } 
?>

        <input type="reset" name="reset" value="ANNULLA"/> 
        <input type="submit" name="submit" value="INVIA"/> 

</body>
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Come si può vedere non ho modificato niente, l'email arrivava senza contenuto anche prima.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
c'è un errore qui
PHP:
${$_POST[$key]} = strip_tags(htmlentities($value));
modifica cosi
PHP:
${$key} = strip_tags(htmlentities($value));
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Ciao, ho modificato la stringa ma non è cambiato niente, il contenuto dell'email è sempre vuoto :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova a stampare il messaggio prima di inviarlo
PHP:
var_dump($testo_del_messaggio);
die();
$to = "@@@";
$result = mail($to, $oggetto, $testo_del_messaggio);
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Mi stampa questo

HTML:
string(49) "Nome: Email: Provincia: Oggetto: Messaggio: "
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
mancano tutti i valori Riposta il codice aggiornato
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
a me funziona per questo di ho chiesto di postare nuovamente il codice magari nelle modifiche che hai fatto hai dimenticato qualcosa
PHP:
<?php
// se hanno premuto il pulsante submit    
if (isset($_POST['submit']) && $_POST['submit'] == "INVIA") {
    // inizializzo campi obbligatori    
    $obbligatorio = array();
    // eliminiamo il post submit     
    unset($_POST['submit']);
    // array check obbligatorie    
    if (!isset($_POST['privacy'])) {
        $obbligatorio['privacy'] = "E' obbligatorio accettare le condizioni sulla privacy";
    }
    if (!isset($_POST['termini'])) {
        $obbligatorio['termini'] = "E' obbligatorio accettare i termini";
    }
    // ciclo del POST    
    foreach ($_POST as $key => $value) {
        // se non è vuoto    
        if (!empty($value)) {
            if ($key == "email") {
                if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
                    $obbligatorio[$key] = "Indirizzo E-mail non valido";
                }
            }
            ${$key} = strip_tags(htmlentities($value));
        } else {
            $obbligatorio[$key] = "\n Il campo $key e' obbligatorio";
        }
    }

    if (count($obbligatorio) == 0) {
        $oggetto = "Prova";
        $testo_del_messaggio = "";
        $testo_del_messaggio.="Nome: $nome\n";
        $testo_del_messaggio.="Email: $email\n";
        $testo_del_messaggio.="Provincia: $provincia\n";
        $testo_del_messaggio.="Oggetto: $oggetto\n";
        $testo_del_messaggio.="Messaggio: $messaggio\n";

        $to = "[email protected]";
        $from = $email;
        $fromname = $nome;
        var_dump($testo_del_messaggio);
        die();
        $result = mail($to, $oggetto, $testo_del_messaggio);
        if ($result) {
            echo "<p>Email inviata</p>";
        } else {
            echo " <p>Error.<br>Impossibile inviare l'email.</p>";
        }
    }
}
?> 
<body> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> 

        <label>Nome 
            <input type="text" name="nome" placeholder="Nome e Cognome"/> 
            <?php
            if (isset($obbligatorio['nome'])) {
                echo "<span>" . $obbligatorio['nome'] . "</span>";
            }
            ?> 
        </label> 
        <br/>
        <label>E-mail 
            <input type="text" name="email" placeholder="Indirizzo E-mail valido"/> 
            <?php
            if (isset($obbligatorio['email'])) {
                echo "<span>" . $obbligatorio['email'] . "</span>";
            }
            ?> 
        </label> 
        <br/> 
        <label>Provincia 
            <select name="provincia"> 
                <option value="">Seleziona</option> 
                <option value="VE">VE</option> 
                <option value="MI">MI</option> 
                <option value="PA">PA</option> 
            </select> 
            <?php
            if (isset($obbligatorio['provincia'])) {
                echo "<span>" . $obbligatorio['provincia'] . "</span>";
            }
            ?> 
        </label> 
        <br/>
        <label>Oggetto 
            <select name="oggetto"> 
                <option value="">Seleziona</option> 
                <option value="1">1</option> 
                <option value="2">2</option> 
                <option value="3">3</option> 
            </select> 
            <?php
            if (isset($obbligatorio['oggetto'])) {
                echo "<span>" . $obbligatorio['oggetto'] . "</span>";
            }
            ?> 
        </label> 
        <br/> 
        <label>Messaggio * 
            <br/> 
            <textarea cols="50" rows="10" name="messaggio"/></textarea> 
            <?php
            if (isset($obbligatorio['messaggio'])) {
                echo "<span>" . $obbligatorio['messaggio'] . "</span>";
            }
            ?> 
        </label><br/> 
        <input type="checkbox" name="privacy" id="privacy" checked/>Acconsento al...<br/>
        <?php
        if (isset($obbligatorio['privacy'])) {
            echo "<span>" . $obbligatorio['privacy'] . "</span>";
        }
        ?>
        <input type="checkbox" name="termini" id="termini" checked/>Ho letto... <br/> 
        <?php
        if (isset($obbligatorio['termini'])) {
            echo "<span>" . $obbligatorio['termini'] . "</span>";
        }
        ?>

        <input type="reset" name="reset" value="ANNULLA"/> 
        <input type="submit" name="submit" value="INVIA"/> 

</body>
non saprei cos'altro farti fare
edit
il var_dump di $testo_del_messaggio
Codice:
string(88) "Nome: nome Email: [email protected] Provincia: MI Oggetto: Prova Messaggio: testo di prova "
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Ciao, riposto allora il codice

PHP:
<?php 
// se hanno premuto il pulsante submit    
if (isset($_POST['submit']) && $_POST['submit'] == "INVIA") { 
    // inizializzo campi obbligatori    
    $obbligatorio = array(); 
    // eliminiamo il post submit     
    unset($_POST['submit']); 
    // array check obbligatorie    
    if (!isset($_POST['privacy'])) { 
        $obbligatorio['privacy'] = "E' obbligatorio accettare le condizioni sulla privacy"; 
    } 
    if (!isset($_POST['termini'])) { 
        $obbligatorio['termini'] = "E' obbligatorio accettare i termini"; 
    } 
    // ciclo del POST    
    foreach ($_POST as $key => $value) { 
        // se non è vuoto    
        if (!empty($value)) { 
           if ($key == "email") {
                if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
                    $obbligatorio[$key] = "Indirizzo E-mail non valido";
                }
            } 
                ${key} = strip_tags(htmlentities($value));
        } else {
            $obbligatorio[$key] = "\n Il campo $key e' obbligatorio";
        }
    }

    if (count($obbligatorio) == 0) { 
        $sbj = "Info"; 
        $testo_del_messaggio.="Nome: $nome\n"; 
	$testo_del_messaggio.="Email: $email\n"; 
        $testo_del_messaggio.="Provincia: $provincia\n";
	$testo_del_messaggio.="Oggetto: $oggetto\n"; 
        $testo_del_messaggio.="Messaggio: $messaggio\n"; 
        $to = "@@@"; 
        $from = $email;
	$fromname = $nome; 
        $result = mail($to, $oggetto, $testo_del_messaggio); 
        if ($result) { 
            echo "<p>Email inviata</p>"; 
        } else { 
            echo " <p>Error.<br>Impossibile inviare l'email.</p>"; 
        } 
    } 
} 
?> 
<body> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> 

        <label>Nome 
            <input type="text" name="nome" placeholder="Nome e Cognome"/> 
            <?php 
            if (isset($obbligatorio['nome'])) { 
                echo "<span>" . $obbligatorio['nome'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/>
<label>E-mail 
            <input type="text" name="email" placeholder="Indirizzo E-mail valido"/> 
            <?php 
            if (isset($obbligatorio['email'])) { 
                echo "<span>" . $obbligatorio['email'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/> 
        <label>Provincia 
            <select name="provincia"> 
                <option value="">Seleziona</option> 
                <option value="VE">VE</option> 
                <option value="MI">MI</option> 
                <option value="PA">PA</option> 
            </select> 
            <?php 
            if (isset($obbligatorio['provincia'])) { 
                echo "<span>" . $obbligatorio['provincia'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/>
 <label>Oggetto 
            <select name="oggetto"> 
                <option value="">Seleziona</option> 
                <option value="1">1</option> 
                <option value="2">2</option> 
                <option value="3">3</option> 
            </select> 
            <?php 
            if (isset($obbligatorio['oggetto'])) { 
                echo "<span>" . $obbligatorio['oggetto'] . "</span>"; 
            } 
            ?> 
        </label> 
        <br/> 
        <label>Messaggio * 
            <br/> 
            <textarea cols="50" rows="10" name="messaggio"/></textarea> 
            <?php 
            if (isset($obbligatorio['messaggio'])) { 
                echo "<span>" . $obbligatorio['messaggio'] . "</span>"; 
            } 
            ?> 
        </label><br/> 
        <input type="checkbox" name="privacy" id="privacy" /checked>Acconsento al...<br/>
 <?php 
        if (isset($obbligatorio['privacy'])) { 
            echo "<span>" . $obbligatorio['privacy'] . "</span>"; 
        } 
?>
        <input type="checkbox" name="termini" id="termini" /checked>Ho letto... <br/> 
 <?php 
    if (isset($obbligatorio['termini'])) { 
    echo "<span>" . $obbligatorio['termini'] . "</span>"; 
        } 
?>

        <input type="reset" name="reset" value="ANNULLA"/> 
        <input type="submit" name="submit" value="INVIA"/> 

</body>

Io di differenze non ne trovo e l'email continua ad arrivare senza testo.
 

Lord

Utente Attivo
30 Ott 2012
60
0
0
Non riesco a modificare il post, se utilizzo il tuo codice l'email arriva completa.

Ho notato però che come mittente non prende l'indirizzo email ma riporta la parte finale dell'indirizzo del destinatario, dovrebbe prendersi $email o sbaglio?
 
Discussioni simili
Autore Titolo Forum Risposte Data
C [HTML] come ottimizzare sito web per dispositivi mobili HTML e CSS 2
A [risolto] Ottimizzare salvataggio dati MySQL 4
A Ottimizzare di più JOIN su tabella/e da 25.000 records MySQL 0
A ottimizzare sito per risoluzione 1024x768 Webdesign e Grafica 0
S Come ottimizzare il mio sito PHP? Troppe query... PHP 1
novello88 [MySQL] OPTIMIZE TABLE (ottimizzare una tabella di MySQL) MySQL 0
G ottimizzare velocemente un immagine per il web?? Windows e Software 1
T ottimizzare codice PHP 2
M Come posso ottimizzare il posizionamento su Google SEO e Posizionamento 1
S consiglio per ottimizzare copia dati fra diversi DB Database 0
M Ottimizzare la pagina HTML e CSS 1
WorldWideWeb Ottimizzare il sito x motori di ricerca Webdesign e Grafica 6
E Ottimizzare una query PHP 1
D Ottimizzare il sito per le diverse risoluzioni HTML e CSS 0
O Ottimizzare Spacash Presenta il tuo Sito 0
L Come ottimizzare la visione del mio sito? HTML e CSS 1
I Ottimizzare BIOS per ASUS A7V600 Hardware 0
S passare un valore da un form a un file .php con metodo post PHP 4
K Form che manda dati doppi PHP 1
K Problema form update PHP 2
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
K form Inserimento record mysql PHP 2
I Form con selettore HTML e CSS 0
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
D Form contatti non funzionante HTML e CSS 0
A Stampare dati da form PHP 15
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
I Form HTML e CSS 17
otto9due $_FILE non passa i dati dal form PHP 1
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
felino Form action costum e parametri in queryString WordPress 1
M Come recuperare molteplici input form PHP 1
M Collegamento tra form html e script php PHP 4
L form immagini per il database PHP 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
L inserimento form dati multipli ? PHP 0
L Problemi form Pagina php HTML e CSS 3
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
D Devo far funzionare un form di contatti PHP 4
B form gestione input PHP 2
V PHP form intersecate PHP 0
8 Javascript - PDF Form Javascript 0
J Form inserimento dati in database Ajax 1
E Gestione profilo utente tramite Form PHP 3
R [C#] Form principale si blocca mentre un altro Thread lavora .NET Framework 0

Discussioni simili