Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222

    Form mail ritorna sempre messaggio compilare tutti i campi

    Ciao,
    ho provato a scrivere un form per l'invio mail. Purtroppo mi ritorna sempre il messaggio di compilare tutti i campi anche se sono tutti compilati. Non riesco a capire dove sia l'errore.
    Questa la pagina di process:
    Codice PHP:
    // richiama il file di setting
    require_once('settings.php');
    if (isset(
    $_POST['submit'])) {

    // codice che processa il form
    foreach ($_POST as $key => $value){

    //elimina eventuali spazi aggiuntivi
    $temp trim($value);

    //se è richiesta ma vuota, aggiungila all'array missing
    if(!strlen($temp) && in_array($key$required)){
    array_push($missing$key);
    }

    // se il campo è aspettato, setta la variabile associata
    elseif(in_array($key$expected)){
    ${
    $key} = htmlentities($temp);
    }
    }
    if (empty(
    $missing)) {
    $contenuto_email "Nome: $name\n\n";
    $contenuto_email .= "Cognome: $surname\n\n";
    $contenuto_email .= "Telefono: $tel\n\n";
    $contenuto_email .= "Cellulare: $cel\n\n";
    $contenuto_email .= "Messaggio:\n $mess\n\n";

    // limita la lunghezza a 70 caratteri per la compatibilità
    $contenuto_email wordwrap($contenuto_email,70);
    $contenuto_email .= "Autorizzazione: $yn\n\n";

    // invia l'email
    $mail_sent mail($destinatario,$subject,$contenuto_email'From: '.$mail);
    $info_message '<p class="info">' $info_mail_sent '</p>';
    if(
    $mail_sent) {

    // Se l'email viene inviata l'array missing non serve più quindi viene svuotato
    unset($missing);
    }
    }
    }

    //se non sono stati compilati i campi obbligatori
    if (isset($_POST['submit']) && isset($missing) && !empty($missing)) :
    $info_message '<p class="error">' $error_missing_fields '</p>';
    elseif (isset(
    $_POST['submit']) && $_POST['submit'] && !$mail_sent) :

    // se ci sono stati problemi con l'invio della mail da parte del server
    $info_message '<p class="error">' $error_mail_server '</p>';
    endif;

    // Mostra una notifica d'errore e di conferma
    if (isset($info_message) && strlen($info_message))
    echo 
    $info_message;

    // richiama il form
    require_once('form.php'); 
    Questa la pagina settings:
    Codice PHP:
    //Messaggio di conferma invio mail
    $info_mail_sent 'La richiesta di contatti &egrave; stata inviata correttamente! La ricontatteremo il prima possibile.';

    // Messaggio d'errore per campi mancanti
    $error_missing_fields 'Per favore, completate tutti i campi del form indicati';

    // email del destinatario del form
    $destinatario 'miaemail@gmail.com';

    // evita che qualcuno possa manomettere
    // il form inserendo campi non previsti
    $expected = array('name','surname','tel','cel','mail','subject','mess','yn');

    // imposta i campi obbligatori
    $required = array('name','surname','mail','subject','mess','yn');

    // array vuoti per i campi obbligatori mancanti
    $missing = array(); 
    Questa la pagina del form:
    Codice PHP:
    <form id="form_contact" action="<?php $_SERVER['PHP_SELF'?>" method="post">
    [list=1]    [*]
    <label for="name">Nome <abbr title="Campo obbligatorio">*</abbr></label>
    <input type="text" name="name" tabindex="1" value="<?php if (isset($missing) && isset($name)) echo $name?>" class="<?php if (isset($missing) && in_array('name',$missing)) echo 'error'?>" />
    [*]
    <label for="surname">Cognome <abbr title="Campo obbligatorio">*</abbr></label>
    <input type="text" name="surname" tabindex="2" value="<?php if (isset($missing) && isset($surname)) echo $surname?>" class="<?php if (isset($missing) && in_array('surname',$missing)) echo 'error'?>" />
    [*]
    <label for="tel">Telefono</label>
    <input type="text" name="tel" tabindex="3" value="<?php if (isset($missing) && isset($tel)) echo $tel?>" class="<?php if (isset($missing) && in_array('tel',$missing)) echo 'error'?>" />
    [*]
    <label for="cel">Cellulare</label>
    <input type="text" name="cel" tabindex="4" value="<?php if (isset($missing) && isset($cel)) echo $cel?>" class="<?php if (isset($missing) && in_array('cel',$missing)) echo 'error'?>" />
    [*]
    <label for="mail">Email <abbr title="Campo obbligatorio">*</abbr></label> 
    <input type="text" name="mail" tabindex="5" value="<?php if (isset($missing) && isset($mail)) echo $mail?>" class="<?php if (isset($missing) && in_array('mail',$missing)) echo 'error'?>" />
    [*]
    <label for="subject">Oggetto richiesta <abbr title="Campo obbligatorio">*</abbr></label> 
    <select name="subject" tabindex="6" class="<?php if (isset($missing) && in_array('subject',$missing)) echo 'missing'?>">
    <option selected>- Scegli -</option>
    <option value="<?php if (isset($missing) && isset($subject)) echo $subject?>">Richiesta 1</option>
    <option value="<?php if (isset($missing) && isset($subject)) echo $subject?>">Richiesta 2</option>
    <option value="<?php if (isset($missing) && isset($subject)) echo $subject?>">Richiesta 3</option>
    </select>
    [*]
    <label for="mess">Messaggio <abbr title="Campo obbligatorio">*</abbr></label> <textarea name="mess" tabindex="7" class="<?php if (isset($missing) && in_array('mess',$missing)) echo 'error'?>"><?php if (isset($missing) && isset($mess)) echo $mess?></textarea>
    [*]
    <label for="priv">Informativa sulla privacy <abbr title="Campo obbligatorio">*</abbr></label> <textarea>Testo privacy</textarea>
    [*]
    <label id="auth" for="yn">
    <input type="radio" name="yn" tabindex="8" checked="checked" value="<?php if (isset($missing) && isset($yn)) echo $yn?>" class="<?php if (isset($missing) && in_array('yn',$missing)) echo 'error'?>" /> Autorizzo  
    <input type="radio" name="yn" tabindex="9" value="<?php if (isset($missing) && isset($yn)) echo $yn?>" class="<?php if (isset($missing) && in_array('yn',$missing)) echo 'error'?>" /> Non autorizzo</label>
    [/list]
    <p class="controls">
    <input type="submit" name="submit" tabindex="10" value="Invia richiesta" />
    </p>
    </form>
    Si fanno sempre nuove scoperte

  2. #2
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Neanche un piccolo aiuto?
    Sono in alto mare...
    Si fanno sempre nuove scoperte

  3. #3
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Niente?
    Per informazioni ho segutio questo tutorial
    Si fanno sempre nuove scoperte

  4. #4
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Ho capito che commetto qualche errore nei campi della richiesta oggetto e della richiesta autorizzazione. Eliminandoli infatti funziona bene. Non so come inserire il codice essendo uno un menu a tendina (non so cosa inserire in ogni select come value) e l'altro un campo radio (stesso discorso).
    Sareste così gentili da spiegarmi come sistemare questi due campi?
    Si fanno sempre nuove scoperte

  5. #5
    Originariamente inviato da gabar-el
    Ho capito che commetto qualche errore nei campi della richiesta oggetto e della richiesta autorizzazione. Eliminandoli infatti funziona bene. Non so come inserire il codice essendo uno un menu a tendina (non so cosa inserire in ogni select come value) e l'altro un campo radio (stesso discorso).
    Sareste così gentili da spiegarmi come sistemare questi due campi?
    dando un'occhiata veloce e cercando le variabili mi pare che hai $yn come campo obbligatorio ma che in realta' non sia valorizzato dalla check box radio.

    Non trovo da nessuna parte la valorizzazione di y/n. Prova a fare cosi':

    Codice PHP:
    [*]
    <label id="auth" for="yn">

    <input type="radio" name="yn" tabindex="8" checked="checked" 
             value="y" 
             class="<?php if (isset($missing) && in_array('yn',$missing)) echo 'error'?>" />
             Autorizzo  

    <input type="radio" name="yn" tabindex="9" value="n" 
             class="<?php if (isset($missing) && in_array('yn',$missing)) echo 'error'?>" />
             Non autorizzo
    </label>
    poi controlla se l'autorizzazione dice y oppure n

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Grazie.
    Circa il controllo di cui parli intendi che nella pagina contatti devo dargli una condizione in modo che se sia settato a y restituisca un risultato e se settato a n ne restituisca un altro? Considerando che generalmente in questo tipo di forn se non si da l'autorizzazione si ricevo un messaggio di avviso come posso gestire la cosa?
    Si fanno sempre nuove scoperte

  7. #7
    Originariamente inviato da gabar-el
    Grazie.
    Circa il controllo di cui parli intendi che nella pagina contatti devo dargli una condizione in modo che se sia settato a y restituisca un risultato e se settato a n ne restituisca un altro? Considerando che generalmente in questo tipo di forn se non si da l'autorizzazione si ricevo un messaggio di avviso come posso gestire la cosa?
    Potrebbe essere il primo controllo che fai.

    Codice PHP:
    // richiama il file di setting
    require_once('settings.php');
    if (isset(
    $_POST['submit'])) {

    // controllo autorizzazione privacy
    if($_POST['yn'] == 'n' ) {  exit('ciao ciao, micio micio');  }      
      
    // codice che processa il form
    foreach ($_POST as $key => $value){

    ..... 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Ho risolto in questo modo:
    Codice PHP:
    if (isset($_POST['submit']) && ($_POST['yn'] == 'n')) {
                        echo 
    'Devi concedere l\'autorizzazione per potere inviare il form';
                        }
                    elseif (isset(
    $_POST['submit']) && ($_POST['yn'] == 'y')) {    
                    
                    
    // codice che processa il form 
    Mi sembra che vada tutto bene. Dici che è una buona soluzione?
    Si fanno sempre nuove scoperte

  9. #9
    Originariamente inviato da gabar-el
    Ho risolto in questo modo:
    Codice PHP:
    if (isset($_POST['submit']) && ($_POST['yn'] == 'n')) {
                        echo 
    'Devi concedere l\'autorizzazione per potere inviare il form';
                        }
                    elseif (isset(
    $_POST['submit']) && ($_POST['yn'] == 'y')) {    
                    
                    
    // codice che processa il form 
    Mi sembra che vada tutto bene. Dici che è una buona soluzione?
    Non m piace troppo.

    Preferisco quella che ti ho proposto. Se non hai l'autorizzazione devi far terminare lo script reinviandolo al form. Poi perche' fare due volte il controllo del submit? occhio, anche perche' se arrivi dal form il submit e' sempre settato.

    Codice PHP:
    <?php

    if (isset($_POST['submit'])) {

    // controllo autorizzazione privacy
    if($_POST['yn'] == 'n' ) {  
    exit(
    "Devi concedere l'autorizzazione per potere inviare il form");  
    }      
      
    // richiama il file di setting e' inutile richiamarlo prima se poi non lo utilizzi
    require_once('settings.php');

    // codice che processa il form
    foreach ($_POST as $key => $value){

    .....
    puoi anche metterci un redirect ad una pagina di avviso o richiamare uno script (funzione) di gestione errore, gestirlo insomma come ti pare. Piu' semplice e' meglio e' per logica e convenienza.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Ma come mi hai detto tu la mail viene spedita ugualmente. Che se ne fa l'intestatario della mail di una richiesta di info che non può utilizzare in quanto non è stata concessa l'autorizzazione?
    Si fanno sempre nuove scoperte

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.