• Home
  • Forum
  • Fare Web
  • PHP

Ottimizzare Form PHP

  • Creatore Discussione Creatore Discussione Lord
  • Data di inizio Data di inizio 30 Ott 2012
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
Succ.
Primo Prec. 2 di 5 Succ. Ultimo

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 5 Nov 2012
  • #21
Ciao,
il codice che hai postato è pieno di errori di sintassi e logica ( non saprei da dove iniziare a correggerlo )
se come ho capito una volta ricevuti i dati li invii via mail , nella discussione che ti ho postato c'è il codice completo che fa proprio quello
al massimo prova a postare il codice funzionante (senza errori) che stai usando adesso
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 9 Nov 2012
  • #22
Ciao, la prima parte del codice è quella corretta da te, la seconda parte è quella che sto utilizzando.
Il form utilizza anche jquery ma il codice php è questo e l'invio funziona.
Sto rileggendo la discussione postata, nel pomeriggio integro quel codice nel mio, nel frattempo ringrazio per la pazienza.
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 9 Nov 2012
  • #23
Credo che questo sia il codice completo e funzionante preso dalla discussione aperta da silver73
PHP:
<?php 
// se hanno premuto il pulsante submit  
if (isset($_POST['submit']) && $_POST['submit'] == "submit") { 
    // inizializzo campi obbligatori  
    $obbligatorio = array(); 
    // eliminiamo il post submit   
    unset($_POST['submit']); 
    // array ceck obbligatorie  
    $array_check = array("original", "ethicalCode", "copyright", "charge", "peerReview"); 
    // inizializzo conteggio check  
    $ck = 0; 
    // ciclo array ceck obbligatorie  
    foreach ($array_check as $value) { 
        // se settata   
        if (isset($_POST[$value])) { 
            // incremento  
            $ck++; 
        } 
    } 
    // se non ne trovo neanche una  
    if ($ck < 5) { 
        $obbligatorio[] = "Checkbox obbligatorie"; 
    } 
    // se sceglie no   
    if ($_POST['selfCandidature'] == 'no') { 
        // lo cancelliamo per non verificarlo   
        unset($_POST['expertise']); 
    } 
    // ciclo del POST  
    foreach ($_POST as $key => $value) { 
        // se non è vuoto  
        if (!empty($value)) { 
            // minimo controllo  
            ${$_POST[$key]} = htmlentities($value); 
        } else { 
            $obbligatorio[] = "\nIl campo $key e' obbligatorio"; 
        } 
    } 
    // estensioni ammesse 
    $estensioni = array("doc", "rtf", "txt"); 
    // se vuoto 
    if (empty($_FILES['all']['tmp_name'])) { 
        $obbligatorio[] = "File obbligatorio"; 
    } else { 
        //altrimenti verifichiamo l'estensione 
        // recuperiamo l'esensione 
        $estensionefile = pathinfo($_FILES["all"]["name"], PATHINFO_EXTENSION); 
        // se non è nell array 
        if (!in_array(strtolower($estensionefile), $estensioni)) { 
            $obbligatorio[] = "File non ammesso"; 
        } 
    } 

    if (count($obbligatorio) == 0) { 
        $header = ""; 
        $msg = ""; 
        $boundary = '--' . md5(uniqid(time())); 
        $ctencoding = "8bit"; 
        $subject = "Submission of a new Article"; 
        $testo_del_messaggio = "Title: $title\n"; 
        $testo_del_messaggio.="Name: $name\n"; 
        $testo_del_messaggio.="Surname: $surname\n"; 
        $testo_del_messaggio.="Email: $email\n"; 
        $testo_del_messaggio.="Telephone: $telephone\n"; 
        $testo_del_messaggio.="Fax: $fax\n"; 
        $testo_del_messaggio.="Title of the Article: $titleArticle\n"; 
        $testo_del_messaggio.="Category: $category\n"; 
        $testo_del_messaggio.="Originality of the article: $original\n"; 
        $testo_del_messaggio.="Ethical Code: $ethicalCode\n"; 
        $testo_del_messaggio.="Rules of the copyright: $copyright\n"; 
        $testo_del_messaggio.="Rules of the page charge: $charge\n"; 
        $testo_del_messaggio.="Anonymous peer review: $peerReview\n"; 
        $testo_del_messaggio.="Self Candidature: $selfCandidature\n"; 
        $testo_del_messaggio.="Expertise: $expertise\n"; 
        $to = "daniela.cardillo@gmail.com"; 
        $from = $_POST['email']; 
        $fromname = $_POST['surname']; 
        $ctype = "application/octet-stream"; 
        $basename = $_FILES['all']['tmp_name']; 
        $name = $_FILES['all']['name']; 
        $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n"; 
        $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;  \n boundary=\"$boundary\"\n"; 
        $header.="Content-Transfer-Encoding: 8bit\n"; 
        $msg .="This is a multi-part message in MIME format.\n--$boundary\n"; 
        $msg .= "Content-Type: text/plain; charset=iso-8859-1\n"; 
        $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $testo_del_messaggio . "\n"; 
        $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n"; 
        $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n"; 
        $linesz = filesize($basename) + 1; 
        $fp = fopen($basename, 'r'); 
        $content = chunk_split(base64_encode(fread($fp, $linesz))); 
        fclose($fp); 
        $msg .= chr(13) . chr(10) . $content; 
        $result = @mail($to, $subject, $msg . "\n", $header); 
        if ($result) { 
            echo "<p>Your data and your article have been successfully sent</p> <p>Thank you very much for your contribution!</p>"; 
        } else { 
            echo " <p>Error.<br>Impossible to send the data.</p><p>Try once again.</p>"; 
        } 
    } else { 
        foreach ($obbligatorio as $value) { 
            echo $value . "<br/>"; 
            echo "Torna al form"; 
        } 
    } 
} else { 
    echo "Post non settato, pagina non accessibile"; 
} 
?>

A me non serve che venga caricato il file quindi elimino

PHP:
 // estensioni ammesse 
    $estensioni = array("doc", "rtf", "txt"); 
    // se vuoto 
    if (empty($_FILES['all']['tmp_name'])) { 
        $obbligatorio[] = "File obbligatorio"; 
    } else { 
        //altrimenti verifichiamo l'estensione 
        // recuperiamo l'esensione 
        $estensionefile = pathinfo($_FILES["all"]["name"], PATHINFO_EXTENSION); 
        // se non è nell array 
        if (!in_array(strtolower($estensionefile), $estensioni)) { 
            $obbligatorio[] = "File non ammesso"; 
        }

PHP:
$boundary = '--' . md5(uniqid(time())); 
        $ctencoding = "8bit";
e
PHP:
$basename = $_FILES['all']['tmp_name']; 
        $name = $_FILES['all']['name'];

Se le stringhe da eliminare sono corrette procedo alla modifica aggiungendo i miei campi.

Grazie
 
Ultima modifica: 9 Nov 2012

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 9 Nov 2012
  • #24
si ad occhio sono quelle
modifica adatta prova e semmai posta
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 12 Nov 2012
  • #25
Ciao, ho integrato il codice al mio form in questo modo:

HTML:
<body>
<form name="contatto" enctype="multipart/form-data" method="post" action="invio.php">
<fieldset>
<label for="nome">1</label><a name="nome"></a>
<input  tabindex="1" type="text" name="nome" id="nome" value="" placeholder="1"/><br/>

<label for="azienda">2</label><a name="azienda"></a>
<input  tabindex="2" type="text" name="azienda" id="azienda" value="" placeholder="2" /><br/>

<label for="azienda">3</label><a name="città"></a>
<input  tabindex="3" type="text" name="città" id="città" value="" placeholder="3" /><br/>

<label for="provincia">4</label><a name="provincia"></a>
<select name="provincia" id="provincia" tabindex="4">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option></select><br/>
<label for="telefono">5</label><a name="telefono"></a>
<input  tabindex="5" type="text" name="telefono" id="telefono" value="" placeholder="5" /><br/>
<label for="email">6</span></label><a name="email"></a>
<input  tabindex="6" type="email" name="email" id="email" value="" placeholder="6" /><br/>

<label for="oggetto">7</span></label><a name="sito"></a>
<input  tabindex="7" type="sito" name="sito" id="sito" value="" placeholder="http://" /><br/>

<label for="settore">8</span></label><a name="settore"></a>
<select name="settore" id="settore" tabindex="8">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option></select><br/>

<label for="pubblicità">9</span></label><a name="pubblicità"></a>
<select name="pubblicità" id="pubblicità" tabindex="9">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option></select><br/>

<label for="oggetto">Seleziona </span></label><a name="oggetto"></a>
<select name="oggetto" id="oggetto" tabindex="10">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option></select><br/>

<label for="messaggio">Messaggio *</label>
<textarea  tabindex="12" cols="50" rows="10" name="messaggio" id="messaggio" placeholder="Messaggio" </textarea><br/>

<input type="checkbox" name="privacy" id="privacy" value="SI"  />Acconsento al...</a><br/>
<input type="checkbox" name="termini" id="termini" value="SI"  />Ho letto... </a><br/>

</fieldset>
<br/>

 <button type="reset">ANNULLA</button>&nbsp;<button type="submit">INVIA</button></form>
</body>

PHP:
<?php 
// se hanno premuto il pulsante submit  
if (isset($_POST['submit']) && $_POST['submit'] == "submit") { 
    // inizializzo campi obbligatori  
    $obbligatorio = array(); 
    // eliminiamo il post submit   
    unset($_POST['submit']); 
    // array ceck obbligatorie  
    $array_check = array("original", "ethicalCode", "copyright", "charge", "peerReview"); 
    // inizializzo conteggio check  
    $ck = 0; 
    // ciclo array ceck obbligatorie  
    foreach ($array_check as $value) { 
        // se settata   
        if (isset($_POST[$value])) { 
            // incremento  
            $ck++; 
        } 
    } 
    // se non ne trovo neanche una  
    if ($ck < 5) { 
        $obbligatorio[] = "Checkbox obbligatorie"; 
    } 
    // se sceglie no   
    if ($_POST['selfCandidature'] == 'no') { 
        // lo cancelliamo per non verificarlo   
        unset($_POST['expertise']); 
    } 
    // ciclo del POST  
    foreach ($_POST as $key => $value) { 
        // se non è vuoto  
        if (!empty($value)) { 
            // minimo controllo  
            ${$_POST[$key]} = htmlentities($value); 
        } else { 
            $obbligatorio[] = "\nIl campo $key e' obbligatorio"; 
        } 
    } 
   
    } 

    if (count($obbligatorio) == 0) { 
        $header = ""; 
        $msg = ""; 
        $boundary = '--' . md5(uniqid(time())); 
        $ctencoding = "8bit"; 
        $subject = "Submission of a new Article"; 
        $testo_del_messaggio = "Title: $title\n"; 
        $testo_del_messaggio.="Name: $name\n"; 
        $testo_del_messaggio.="Surname: $surname\n"; 
        $testo_del_messaggio.="Email: $email\n"; 
        $testo_del_messaggio.="Telephone: $telephone\n"; 
        $testo_del_messaggio.="Fax: $fax\n"; 
        $testo_del_messaggio.="Title of the Article: $titleArticle\n"; 
        $testo_del_messaggio.="Category: $category\n"; 
        $testo_del_messaggio.="Originality of the article: $original\n"; 
        $testo_del_messaggio.="Ethical Code: $ethicalCode\n"; 
        $testo_del_messaggio.="Rules of the copyright: $copyright\n"; 
        $testo_del_messaggio.="Rules of the page charge: $charge\n"; 
        $testo_del_messaggio.="Anonymous peer review: $peerReview\n"; 
        $testo_del_messaggio.="Self Candidature: $selfCandidature\n"; 
        $testo_del_messaggio.="Expertise: $expertise\n"; 
        $to = "i@-it"; 
        $from = $_POST['email']; 
        $fromname = $_POST['surname']; 
        $ctype = "application/octet-stream"; 
       $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n"; 
        $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;  \n boundary=\"$boundary\"\n"; 
        $header.="Content-Transfer-Encoding: 8bit\n"; 
        $msg .="This is a multi-part message in MIME format.\n--$boundary\n"; 
        $msg .= "Content-Type: text/plain; charset=iso-8859-1\n"; 
        $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $testo_del_messaggio . "\n"; 
        $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n"; 
        $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n"; 
        $msg .= chr(13) . chr(10) . $content; 
        $result = @mail($to, $subject, $msg . "\n", $header); 
        if ($result) { 
            echo "<p>Your data and your article have been successfully sent</p> <p>Thank you very much for your contribution!</p>"; 
        } else { 
            echo " <p>Error.<br>Impossible to send the data.</p><p>Try once again.</p>"; 
        } 
    } else { 
        foreach ($obbligatorio as $value) { 
            echo $value . "<br/>"; 
            echo "Torna al form"; 
        } 
    } 
} else { 
    echo "Post non settato, pagina non accessibile"; 
} 
?>

Cliccando su INVIA restituisce l'errore "Post non settato, pagina non accessibile"
Dove sbaglio?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 12 Nov 2012
  • #26
qui
HTML:
<button type="submit">INVIA</button>
cambialo con
HTML:
<input type="submit" name="submit" value="submit"/>
altrimenti questa condizione non sarà mai vera
PHP:
if (isset($_POST['submit']) && $_POST['submit'] == "submit") {
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 16 Nov 2012
  • #27
Ciao, grazie, ho corretto in input e quell'errore è scomparso, comunque il form non funziona.

Ho vari campi obbligatori, tra questi anche quelli nel menu a discesa, poi ho un campo che non è obbligatorio "sito" e due check obbligatorie, se uso questo codice php non c'è il controllo sui campi, dove sbaglio?

Grazie

PHP:
<?php 
// se hanno premuto il pulsante submit  
if (isset($_POST['submit']) && $_POST['submit'] == "submit") { 
    // inizializzo campi obbligatori  
    $obbligatorio = array(); 
    // eliminiamo il post submit   
    unset($_POST['submit']); 
    // array check obbligatorie  
    $array_check = array("original", "ethicalCode", "copyright", "charge", "peerReview"); 
    // inizializzo conteggio check  
    $ck = 0; 
    // ciclo array ceck obbligatorie  
    foreach ($array_check as $value) { 
        // se settata   
        if (isset($_POST[$value])) { 
            // incremento  
            $ck++; 
        } 
    } 
    // se non ne trovo neanche una  
    if ($ck < 5) { 
        $obbligatorio[] = "Checkbox obbligatorie"; 
    } 
    // se sceglie no   
    if ($_POST['selfCandidature'] == 'no') { 
        // lo cancelliamo per non verificarlo   
        unset($_POST['expertise']); 
    } 
    // ciclo del POST  
    foreach ($_POST as $key => $value) { 
        // se non è vuoto  
        if (!empty($value)) { 
            // minimo controllo  
            ${$_POST[$key]} = htmlentities($value); 
        } else { 
            $obbligatorio[] = "\n Il campo $key e' obbligatorio"; 
        } 
    } 
   
    } 

    if (count($obbligatorio) == 0) { 
        $header = ""; 
        $msg = ""; 
        $boundary = '--' . md5(uniqid(time())); 
        $ctencoding = "8bit"; 
        $subject = "Submission of a new Article"; 
        $testo_del_messaggio = "Title: $title\n"; 
        $testo_del_messaggio.="Name: $name\n"; 
        $testo_del_messaggio.="Surname: $surname\n"; 
        $testo_del_messaggio.="Email: $email\n"; 
        $testo_del_messaggio.="Telephone: $telephone\n"; 
        $testo_del_messaggio.="Fax: $fax\n"; 
        $testo_del_messaggio.="Title of the Article: $titleArticle\n"; 
        $testo_del_messaggio.="Category: $category\n"; 
        $testo_del_messaggio.="Originality of the article: $original\n"; 
        $testo_del_messaggio.="Ethical Code: $ethicalCode\n"; 
        $testo_del_messaggio.="Rules of the copyright: $copyright\n"; 
        $testo_del_messaggio.="Rules of the page charge: $charge\n"; 
        $testo_del_messaggio.="Anonymous peer review: $peerReview\n"; 
        $testo_del_messaggio.="Self Candidature: $selfCandidature\n"; 
        $testo_del_messaggio.="Expertise: $expertise\n"; 
        $to = "@@@"; 
        $from = $_POST['email']; 
        $fromname = $_POST['surname']; 
        $ctype = "application/octet-stream"; 
       $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n"; 
        $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;  \n boundary=\"$boundary\"\n"; 
        $header.="Content-Transfer-Encoding: 8bit\n"; 
        $msg .="This is a multi-part message in MIME format.\n--$boundary\n"; 
        $msg .= "Content-Type: text/plain; charset=iso-8859-1\n"; 
        $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $testo_del_messaggio . "\n"; 
        $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n"; 
        $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n"; 
        $msg .= chr(13) . chr(10) . $content; 
        $result = @mail($to, $subject, $msg . "\n", $header); 
        if ($result) { 
            echo "<p>Your data and your article have been successfully sent</p> <p>Thank you very much for your contribution!</p>"; 
        } else { 
            echo " <p>Error.<br>Impossible to send the data.</p><p>Try once again.</p>"; 
        } 
    } else { 
        foreach ($obbligatorio as $value) { 
            echo $value . "<br/>"; 
            echo "Torna al form"; 
        } 
    } 
} else { 
    echo "Post non settato, pagina non accessibile"; 
} 
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 17 Nov 2012
  • #28
devi modificare questo array
PHP:
$array_check = array("original", "ethicalCode", "copyright", "charge", "peerReview");
inserendo i name dei tuoi campi obbligatori
PHP:
$array_check = array("nome", "settore", "azienda", "telefono");  // ecosi via per tutti i campi che voui siano obbligatori
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 17 Nov 2012
  • #29
Ciao, nuovamente grazie, nel post precedente avevo copiato il codice vecchio, nel mio mio file php ho inserito i campi obbligatori

PHP:
$array_check = array("nome", "azienda", "città", "provincia", "telefono", "email", "settore", "pubblicità", "oggetto", "messaggio", "privacy", "termini");

Il controllo non funziona e se faccio submit mi restituisce "Errore HTTP 500 (Internal Server Error): Si è verificata una condizione imprevista durante il tentativo del server di soddisfare la richiesta"

Lo stesso errore si presenta se digito nel browser il percorso del file di invio.php
 
Ultima modifica: 17 Nov 2012

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 17 Nov 2012
  • #30
L'errore che hai indicato secondo me non si riferisce al codice in esame
forse includi altri file ?
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 18 Nov 2012
  • #31
Ciao, il form lo sto provando su due pagine in php, in una c'è il form

HTML:
<body>
<form name="contatto" enctype="multipart/form-data" method="post" action="mail.php">

<label for="nome">1</label><a name="nome"></a>
<input  tabindex="1" type="text" name="nome" id="nome" value="" placeholder="1"/><br/>

<label for="azienda">2</label><a name="azienda"></a>
<input  tabindex="2" type="text" name="azienda" id="azienda" value="" placeholder="2" /><br/>

<label for="azienda">3</label><a name="città"></a>
<input  tabindex="3" type="text" name="città" id="città" value="" placeholder="3" /><br/>

<label for="provincia">4</label><a name="provincia"></a>
<select name="provincia" id="provincia" tabindex="4">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option></select><br/>

<label for="telefono">5</label><a name="telefono"></a>
<input  tabindex="5" type="text" name="telefono" id="telefono" value="" placeholder="5" /><br/>

<label for="email">6</span></label><a name="email"></a>
<input  tabindex="6" type="email" name="email" id="email" value="" placeholder="6" /><br/>

<label for="sito">7</span></label><a name="sito"></a>
<input  tabindex="7" type="sito" name="sito" id="sito" value="" placeholder="http://" /><br/>

<label for="settore">8</span></label><a name="settore"></a>
<select name="settore" id="settore" tabindex="8">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option></select><br/>

<label for="pubblicità">9</span></label><a name="pubblicità"></a>
<select name="pubblicità" id="pubblicità" tabindex="9">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option></select><br/>

<label for="oggetto">Oggetto </span></label><a name="oggetto"></a>
<select name="oggetto" id="oggetto" tabindex="10">
<option value=""> Seleziona </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option></select><br/>

<label for="messaggio">Messaggio *</label><br/>
<textarea  tabindex="11" cols="50" rows="10" name="messaggio" id="messaggio" placeholder="Messaggio" /></textarea><br>

<input type="checkbox" name="privacy" id="privacy" value="SI"  checked/>Acconsento al...</a><br/>
<input type="checkbox" name="termini" id="termini" value="SI" checked />Ho letto... </a><br/>

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

</body>

nell'altra c'è il file php

PHP:
<?php  
// se hanno premuto il pulsante submit   
if (isset($_POST['submit']) && $_POST['submit'] == "submit") {  
    // inizializzo campi obbligatori   
    $obbligatorio = array();  
    // eliminiamo il post submit    
    unset($_POST['submit']);  
    // array check obbligatorie   
    $array_check = array("nome", "azienda", "città", "provincia", "telefono", "email", "settore", "pubblicità", "oggetto", "messaggio", "privacy", "termini");  
    // inizializzo conteggio check   
    $ck = 0;  
    // ciclo array ceck obbligatorie   
    foreach ($array_check as $value) {  
        // se settata    
        if (isset($_POST[$value])) {  
            // incremento   
            $ck++;  
        }  
    }  
    // se non ne trovo neanche una   
    if ($ck < 5) {  
        $obbligatorio[] = "Checkbox obbligatorie";  
    }  
    // se sceglie no    
    if ($_POST['selfCandidature'] == 'no') {  
        // lo cancelliamo per non verificarlo    
        unset($_POST['expertise']);  
    }  
    // ciclo del POST   
    foreach ($_POST as $key => $value) {  
        // se non è vuoto   
        if (!empty($value)) {  
            // minimo controllo   
            ${$_POST[$key]} = htmlentities($value);  
        } else {  
            $obbligatorio[] = "\n Il campo $key e' obbligatorio";  
        }  
    }  
    
    }  

    if (count($obbligatorio) == 0) {  
        $header = "";  
        $msg = "";  
        $boundary = '--' . md5(uniqid(time()));  
        $ctencoding = "8bit";  
        $oggetto = "Submission of a new Article";  
        $testo_del_messaggio.="Name: $nome\n";  
        $testo_del_messaggio.="Surname: $azienda\n";  
        $testo_del_messaggio.="Email: $città\n";  
        $testo_del_messaggio.="Telephone: $provincia\n";  
        $testo_del_messaggio.="Fax: $telefono\n";  
        $testo_del_messaggio.="Title of the Article: $email\n";  
        $testo_del_messaggio.="Category: $settore\n";  
        $testo_del_messaggio.="Originality of the article: $pubblicità\n";  
        $testo_del_messaggio.="Ethical Code: $oggetto\n";  
        $testo_del_messaggio.="Rules of the copyright: $messaggio\n";  
        $testo_del_messaggio.="Rules of the page charge: $privacy\n";  
        $testo_del_messaggio.="Anonymous peer review: $termini\n";  
        $to = "mail@.com";  
        $from = $_POST['email'];  
        $fromname = $_POST['azienda'];  
        $ctype = "application/octet-stream";  
       $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n";  
        $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;  \n boundary=\"$boundary\"\n";  
        $header.="Content-Transfer-Encoding: 8bit\n";  
        $msg .="This is a multi-part message in MIME format.\n--$boundary\n";  
        $msg .= "Content-Type: text/plain; charset=iso-8859-1\n";  
        $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $testo_del_messaggio . "\n";  
        $msg .="--$boundary\nContent-type: $ctype;\n name=\"$nome\"\n";  
        $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n";  
        $msg .= chr(13) . chr(10) . $content;  
        $result = @mail($to, $subject, $msg . "\n", $header);  
        if ($result) {  
            echo "<p>Your data and your article have been successfully sent</p> <p>Thank you very much for your contribution!</p>";  
        } else {  
            echo " <p>Error.<br>Impossible to send the data.</p><p>Try once again.</p>";  
        }  
    } else {  
        foreach ($obbligatorio as $value) {  
            echo $value . "<br/>";  
            echo "Torna al form";  
        }  
    }  
} else {  
    echo "Post non settato, pagina non accessibile";  
}  
?>

Entrambi i file si trovano nella stessa cartella.
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 18 Nov 2012
  • #32
Trovato l'errore, c'era una parantesi graffa in più.

Il controllo dei campi ora funziona ma i messaggi di errore si vedono nella pagina di invio, vorrei che si vedessero nella pagina del form, è il caso di aggiungere /required per ogni campo?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 18 Nov 2012
  • #33
metti entrmbi i codici in una sola pagina
prima i controlli poi il form in questo modo dovrebbe stamparti gli errori sopra il form
dovrai cambiare la action
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 18 Nov 2012
  • #34
Ok, l'action dovrebbe puntare #, giusto?

Mi arrivano le email con gli allegati (in realtà non ce ne sono) ho eliminato tutto ciò che riguarda l'upload

PHP:
<?php  
// se hanno premuto il pulsante submit   
if (isset($_POST['submit']) && $_POST['submit'] == "submit") {  
    // inizializzo campi obbligatori   
    $obbligatorio = array();  
    // eliminiamo il post submit    
    unset($_POST['submit']);  
    // array check obbligatorie   
    $array_check = array("nome", "azienda", "città", "provincia", "telefono", "email", "settore", "pubblicità", "oggetto", "messaggio", "privacy", "termini");  
    // inizializzo conteggio check   
    $ck = 0;  
    // ciclo array ceck obbligatorie   
    foreach ($array_check as $value) {  
        // se settata    
        if (isset($_POST[$value])) {  
            // incremento   
            $ck++;  
        }  
    }  
    // se non ne trovo neanche una   
    if ($ck < 5) {  
        $obbligatorio[] = "Checkbox obbligatorie";  
    }  
    // se sceglie no    
   if ($_POST['selfCandidature'] == 'no') {  
        // lo cancelliamo per non verificarlo    
        unset($_POST['expertise']);
    }  
    // ciclo del POST   
    foreach ($_POST as $key => $value) {  
        // se non è vuoto   
        if (!empty($value)) {  
            // minimo controllo   
            ${$_POST[$key]} = htmlentities($value);  
        } else {  
            $obbligatorio[] = "\n Il campo $key e' obbligatorio";  
        }  
    }  
    


    if (count($obbligatorio) == 0) {  
        $header = "";  
        $msg = ""; 
        $oggetto = "Submission of a new Article";  
        $testo_del_messaggio.="Name: $nome\n";  
        $testo_del_messaggio.="Surname: $azienda\n";  
        $testo_del_messaggio.="Email: $città\n";  
        $testo_del_messaggio.="Telephone: $provincia\n";  
        $testo_del_messaggio.="Fax: $telefono\n";  
        $testo_del_messaggio.="Title of the Article: $email\n";  
        $testo_del_messaggio.="Category: $settore\n";  
        $testo_del_messaggio.="Originality of the article: $pubblicità\n";  
        $testo_del_messaggio.="Ethical Code: $oggetto\n";  
        $testo_del_messaggio.="Rules of the copyright: $messaggio\n";  
        $testo_del_messaggio.="Rules of the page charge: $privacy\n";  
        $testo_del_messaggio.="Anonymous peer review: $termini\n";  
        $to = "@.it";  
        $from = $_POST['email'];  
        $fromname = $_POST['azienda'];  
        $ctype = "application/octet-stream";  
        $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n";  
        $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;  \n boundary=\"$boundary\"\n";  
        $header.="Content-Transfer-Encoding: 8bit\n";  
        $msg .="This is a multi-part message in MIME format.\n--$boundary\n";  
        $msg .= "Content-Type: text/plain; charset=iso-8859-1\n";  
        $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $testo_del_messaggio . "\n";  
        $msg .="--$boundary\nContent-type: $ctype;\n name=\"$nome\"\n";  
        $msg .= chr(13) . chr(10) . $content;
        $result = @mail($to, $oggetto, $msg . "\n", $header);  
        if ($result) {  
            echo "<p>Your data and your article have been successfully sent</p> <p>Thank you very much for your contribution!</p>";  
        } else {  
            echo " <p>Error.<br>Impossible to send the data.</p><p>Try once again.</p>";  
        }  
    } else {  
        foreach ($obbligatorio as $value) {  
            echo $value . "<br/>";  
            echo "Torna al form";  
        }  
    }  
} else {  
    echo "Post non settato, pagina non accessibile";  
}  
?>

Il controllo checkbox non lo capisco, io ne ho due obbligatorie già checked, se non le spunto l'email arriva comunque e l'errore non compare.

Ho provato a mettere i codici un'unica pagina ma i messaggi si vedono in basso, per farli vedere sotto ogni campo serve /required?
 
Ultima modifica: 18 Nov 2012

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 18 Nov 2012
  • #35
ora che lo rileggo bisogna adattarlo meglio alle tue esigenze
in questo array ci vanno i name delle check obbligatorie
PHP:
$array_check = array("privacy", "termini");
non dei campi
i campi sono tutti obbligatori in questo script

il controllo dovrai modificarlo cosi
PHP:
$ck = 0;
        // ciclo array ceck obbligatorie   
        foreach ($array_check as $value) {
            // se non settata    
            if (!isset($_POST[$value])) {
                // incremento   
                $ck++;
            }
        }
        // se il contatore è maggior di 0
        if ($ck > 0) {
            $obbligatorio[] = "Checkbox obbligatorie";
        }
il form presenta cmq degli errori di sintassi HTML sistemali

EDIT:
o semplicemente
PHP:
if(!isset($_POST['privacy'])) {
           $obbligatorio['privacy'] = "E' obbligatorio accettare le condizioni sulla privacy";
        }
 
Ultima modifica: 18 Nov 2012

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 18 Nov 2012
  • #36
provalo cosi
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['termin'] = "E' obbligatorio accettare i termini";
    }
    // ciclo del POST   
    foreach ($_POST as $key => $value) {
        // se non è vuoto   
        if (!empty($value)) {
            // minimo controllo   
            ${$_POST[$key]} = htmlentities($value);
        } else {
            $obbligatorio[$key] = "\n Il campo $key e' obbligatorio";
        }
    }

    if (count($obbligatorio) == 0) {
        $oggetto = "Oggetto della mail";
        $testo_del_messaggio.="Nome: $nome\n";
        $testo_del_messaggio.="Provincia: $provincia\n";
        $testo_del_messaggio.="Messaggio: $messaggio\n";
        $to = "@.it";
        $from = $email;
        $fromname = $azienda;
        $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"/>
            <?php
            if (isset($obbligatorio['nome'])) {
                echo "<span>" . $obbligatorio['nome'] . "</span>";
            }
            ?>
        </label>
        <br/>
        <label>Provincia
            <select name="provincia">
                <option value=""></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>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/>
        <input type="checkbox" name="termini" id="termini" checked />Ho letto... <br/>

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

</body>
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 18 Nov 2012
  • #37
Ciao, dici bene, ho utilizzato questo codice perchè me l'avevi consigliato, non credevo che andando avanti mi sarei complicato la vita

Scusa mi diresti dove sono gli errori nell'HTML? Ti riferisci ai campi accentati?

Nel php ho visto che tutti i campi sono obbligatori, devo rifare tutto.
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 18 Nov 2012
  • #38
Con l'ultimo codice il controllo checkbox non funziona, l'email parte ugualmente.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 18 Nov 2012
  • #39
ho scritto termin anziche termini
l'ho modificato testato e funziona
 
L

Lord

Utente Attivo
30 Ott 2012
60
0
0
  • 18 Nov 2012
  • #40
L'avevo corretto ma non funziona, nè privacy nè termini.

Se tolgo le spunte l'email non parte ma non ricevo nessun errore e nessun messaggio riferito alle checkbox.

Aggiungo che l'email arriva con i campi vuoti.
 
Ultima modifica: 18 Nov 2012
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
Succ.
Primo Prec. 2 di 5 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

C
[HTML] come ottimizzare sito web per dispositivi mobili
  • clausius
  • 12 Giu 2017
  • HTML e CSS
Risposte
2
Visite
2K
HTML e CSS 21 Giu 2017
jonnino2004
A
[risolto] Ottimizzare salvataggio dati
  • Asia2810
  • 7 Mar 2014
  • MySQL
Risposte
4
Visite
1K
MySQL 11 Mar 2014
Asia2810
A
A
Ottimizzare di più JOIN su tabella/e da 25.000 records
  • aprescindere
  • 22 Ago 2013
  • MySQL
Risposte
0
Visite
1K
MySQL 22 Ago 2013
aprescindere
A
A
ottimizzare sito per risoluzione 1024x768
  • alessandromonti
  • 20 Apr 2012
  • Webdesign e Grafica
Risposte
0
Visite
2K
Webdesign e Grafica 20 Apr 2012
alessandromonti
A
S
Come ottimizzare il mio sito PHP? Troppe query...
  • siriuxs
  • 20 Mar 2012
  • PHP
Risposte
1
Visite
2K
PHP 20 Mar 2012
Eliox
[MySQL] OPTIMIZE TABLE (ottimizzare una tabella di MySQL)
  • novello88
  • 17 Mar 2012
  • MySQL
Risposte
0
Visite
2K
MySQL 17 Mar 2012
novello88
G
ottimizzare velocemente un immagine per il web??
  • giulio46moto
  • 19 Dic 2011
  • Windows e Software
Risposte
1
Visite
1K
Windows e Software 19 Dic 2011
giulio46moto
G
T
ottimizzare codice
  • torrone
  • 9 Mag 2011
  • PHP
Risposte
2
Visite
1K
PHP 9 Mag 2011
torrone
T
M
Come posso ottimizzare il posizionamento su Google
  • Mauro1971
  • 4 Apr 2011
  • SEO e Posizionamento
Risposte
1
Visite
2K
SEO e Posizionamento 12 Apr 2011
Skipper
S
consiglio per ottimizzare copia dati fra diversi DB
  • sal21
  • 3 Dic 2009
  • Database
Risposte
0
Visite
2K
Database 3 Dic 2009
sal21
S
M
Ottimizzare la pagina
  • mcdigit
  • 6 Nov 2009
  • HTML e CSS
Risposte
1
Visite
1K
HTML e CSS 8 Nov 2009
lotus
L
Ottimizzare il sito x motori di ricerca
  • WorldWideWeb
  • 16 Mag 2008
  • Webdesign e Grafica
Risposte
6
Visite
2K
Webdesign e Grafica 18 Lug 2008
WorldWideWeb
E
Ottimizzare una query
  • etttorina
  • 24 Feb 2008
  • PHP
Risposte
1
Visite
1K
PHP 26 Feb 2008
Eliox
D
Ottimizzare il sito per le diverse risoluzioni
  • dedicato
  • 18 Dic 2007
  • HTML e CSS
Risposte
0
Visite
1K
HTML e CSS 18 Dic 2007
dedicato
D
O
Ottimizzare Spacash
  • orianag
  • 5 Mag 2006
  • Presenta il tuo Sito
Risposte
0
Visite
1K
Presenta il tuo Sito 5 Mag 2006
orianag
O
L
Come ottimizzare la visione del mio sito?
  • linux
  • 25 Nov 2005
  • HTML e CSS
Risposte
1
Visite
1K
HTML e CSS 28 Nov 2005
dead
D
I
Ottimizzare BIOS per ASUS A7V600
  • ivaneffect
  • 2 Ott 2004
  • Hardware
Risposte
0
Visite
3K
Hardware 2 Ott 2004
ivaneffect
I
F
Salve a tutti, devo creare un sito web/gioco online dove cliccando il tasto 'Inizia' del form viene estratta una capitale casualmente dal
  • faccone
  • 8 Mag 2024
  • PHP
Risposte
1
Visite
1K
PHP 23 Apr 2025
webest
G
campo non presente nel form
  • Gae
  • 7 Mag 2024
  • Javascript
Risposte
2
Visite
3K
Javascript 8 Mag 2024
Gae
G
S
passare un valore da un form a un file .php con metodo post
  • smack2005
  • 15 Nov 2023
  • PHP
Risposte
4
Visite
1K
PHP 23 Nov 2023
zorro
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?