Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: "orrore" contact form

  1. #1

    "orrore" contact form

    Ciao a tutti. Premetto che sono sono un programmatore e che le mie competenze per quanto riguarda php sono minime, quindi ciò che faccio è cercare di recuperare degli script su internet e metterli insieme al meglio...
    Sul sito che ho sviluppato per un mio cliente ho creato la classica pagina contatti con un contact form validato sia con jquery che con php. La validazione client-side funziona, ma, sebbene inserisca tutti i campi richiesti, non riesco a far mandare la mail perché si verifica qualche problema nella validazione php.
    La pagina è visualizzabile all'indirizzo http://bakokkogroup.it/contatti.php

    Ecco qui il codice della mia pagina ripulito delle parti non necessarie:

    Codice PHP:
    <?php
    include_once ($_SERVER["DOCUMENT_ROOT"].'/inc/common.php');
    ?>
     
    <?php
    //If the form is submitted
    if( isset($_POST['submit']) )
    {
        
    //  NAME (requested) field validation
        
    if(trim($_POST['name']) == '') {
            
    $hasError true;
        } else {
            
    $name trim($_POST['name']);
        }

        
    //  TELEPHONE (optional) field validation
        
    if (!eregi("^[0-9]+$"trim($_POST['telephone']))) {
            
    $hasError true;
        } else {
            
    $subject trim($_POST['telephone']);
        }
        
        
    //  FAX field validation optional
        
    if (!eregi("^[0-9]+$"trim($_POST['fax']))) {
            
    $hasError true;
        } else {
            
    $subject trim($_POST['fax']);
        }
        
        
    //  EMAIL (requested) field validation
        
    if(trim($_POST['email']) == '')  {
            
    $hasError true;
        } else if (!
    eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$"trim($_POST['email']))) {
            
    $hasError true;
        } else {
            
    $email trim($_POST['email']);
        }
        
        
    // ADDRESS (optional) field validation
        
    if (!eregi("^[a-zA-Z0-9]+$"trim($_POST['address']))) {
            
    $hasError true;
        } else {
            
    $subject trim($_POST['address']);
        }

        
    // CITY (optional) field validation
        
    if (!eregi("^[a-zA-Z0-9]+$"trim($_POST['city']))) {
            
    $hasError true;    
        } else {
            
    $name trim($_POST['city']);
        }
        
        
    //  Check to make sure MESSAGE (requested) were entered
        
    if(trim($_POST['message']) == '') {
            
    $hasError true;
        } else {
            if(
    function_exists('stripslashes')) {
                
    $messages stripslashes(trim($_POST['message']));
            } else {
                
    $messages trim($_POST['message']);
            }
        }

        
    //  If there is no error, send the email
        
    if( !isset($hasError) ) {
            
    $emailTo 'info@bakokkogroup.it'//destination email address here
            
    $body "Nome e Cognome: $name \n\nTelefono: $telephone \n\nFax: $fax \n\nEmail: $email \n\nIndirizzo: $address \n\nCittà: $city \n\nMessaggio:\n $message";
            
    $headers 'From: My Site <'.$emailTo.'>' "\r\n" 'Reply-To: ' $email;
            
    mail($emailTo$subject$body$headers);
            
    $emailSent true;
        }
    }
    ?>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
        <head>
            <title>Titolo</title>        
        </head>

        <body id="contatti" onload="initialize()">
        
            <h3>Contact form</h3>
            
            <?php if(isset($hasError)) { //If errors are found ?>
                <p class="form-error" style="color:red">Messaggio di errore</p>
            <?php ?>
        
            <?php if(isset($emailSent) && $emailSent == true) { //If email is sent ?>
                <p class="form-success" style="color:green">Email inviata correttamente</p>
            <?php ?>
            
            <form id="contactform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
                    
                <label class="inlined" for="name">Nome e Cognome</label>
                <input type="text" class="input-text validate[required,custom[onlyLetter],length[0,50]]" id="name" name="name"  value="<?php echo $_POST['name'?>" />
        
                <label class="inlined" for="telephone">Telefono (optional)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyNumber],length[0,20]]" id="telephone" name="telephone" value="<?php echo $_POST['telephone'?>"/>
        
                <label class="inlined" for="fax">Fax (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyNumber],length[0,20]]" id="fax" name="fax" value="<?php echo $_POST['fax'?>"/>
                                                                
                <label class="inlined" for="email">Email</label>
                <input type="text" class="input-text validate[required,custom[email],length[0,50]]" id="email"  name="email" value="<?php echo $_POST['email'?>"/>
        
                <label class="inlined" for="address">Indirizzo (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,length[0,100]]" id="address" name="address" value="<?php echo $_POST['address'?>" />
                
                <label class="inlined" for="city">Citta' (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyLetter],length[0,50]]" id="city" name="city" value="<?php echo $_POST['city'?>" />
                
                <label class="textarea inlined" for="message">Messaggio</label>
                <textarea class="input-text validate[required,length[6,300]]" id="message" name="message" rows="6" cols="150"><?php echo $_POST['message'?></textarea>
        
                <input class="button" type="submit" value="invia" name="submit" />
                
            </form> 

        </body>
    </html>
    Qualcuno di voi riesce ad individuare il mio errore (o orrore)?
    Grazie in anticipo

    Mattia

  2. #2
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    beh comincerei col fare del debug
    in ogni validazione inserisci un messaggio, per esempio

    Codice PHP:
    //  NAME (requested) field validation
        
    if(trim($_POST['name']) == '') {
            
    $hasError true;
        } else {
            
    $name trim($_POST['name']);
        } 
    diventa

    Codice PHP:
    //  NAME (requested) field validation
        
    if(trim($_POST['name']) == '') {
            
    $hasError true;
            print 
    "Errore nome
    "
    ;
        } else {
            
    $name trim($_POST['name']);
        } 
    e così via. Così almeno capisci quale controllo dà l'errore
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  3. #3
    non è questo il problema ma valorizzi la stessa variabile + volte

    $subject = trim($_POST['address']);
    $subject = trim($_POST['fax']);
    $subject = trim($_POST['telephone']);

  4. #4
    Grazie ragazzi per i consigli.

    non è questo il problema ma valorizzi la stessa variabile + volte

    $subject = trim($_POST['address']);
    $subject = trim($_POST['fax']);
    $subject = trim($_POST['telephone']);
    Non riesco a capire che cosa significa il tuo messaggio Oly, potresti spiegarmi meglio cosa intendi? Sono veramente una zappa per quanto riguarda php

  5. #5
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    oly1982 ha detto che devi usare variabili diverse es
    $subject1 = trim($_POST['address']);
    $subject2 = trim($_POST['fax']);
    $subject3 = trim($_POST['telephone']);

  6. #6
    Dopo una settimana di malattia eccoci di nuovo a romperci la testa su sto form...
    Innanzitutto grazie a tutti per avermi dato preziose indicazioni.
    Ecco qui il codice sistemato e corretto dagli errori che mi avete fatto notare:

    Codice PHP:
    <?php
    //If the form is submitted
    if( isset($_POST['submit']) )
    {
        
    //  NAME (requested) field validation
        
    if (trim($_POST['name']) == '') {
            
    $hasError true;
        } else if (!
    eregi("^[a-zA-Z]+$"trim($_POST['name']))) {
            
    $hasError true;
            print 
    "Errore name
    "
    ;
        } else {
            
    $name trim($_POST['name']);
        }

        
    //  TELEPHONE (optional) field validation
        
    if (!eregi("^[0-9]+$"trim($_POST['telephone']))) {
            
    $hasError true;
            print 
    "Errore telephone
    "
    ;
        } else {
            
    $telephone trim($_POST['telephone']);
        }
        
        
    //  FAX (optional) field validation
        
    if (!eregi("^[0-9]+$"trim($_POST['fax']))) {
            
    $hasError true;
            print 
    "Errore fax
    "
    ;
        } else {
            
    $fax trim($_POST['fax']);
        }
        
        
    //  EMAIL (requested) field validation
        
    if (trim($_POST['email']) == '') {
            
    $hasError true;
        } else if (!
    eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$"trim($_POST['email']))) {
            
    $hasError true;
            print 
    "Errore email
    "
    ;    
        } else {
            
    $email trim($_POST['email']);
        }
        
        
    // ADDRESS (optional) field validation
        
    if (!eregi("^[a-zA-Z0-9]+$"trim($_POST['address']))) {
            
    $hasError true;
            print 
    "Errore address
    "
    ;    
        } else {
            
    $address trim($_POST['address']);
        }

        
    // CITY (optional) field validation
        
    if (!eregi("^[a-zA-Z]+$"trim($_POST['city']))) {
            
    $hasError true;    
            print 
    "Errore city
    "
    ;    
        } else {
            
    $city trim($_POST['city']);
        }
        
        
    //  Check to make sure MESSAGE (requested) were entered
        
    if (trim($_POST['message']) == '') {
            
    $hasError true;
        } else {
            if(
    function_exists('stripslashes')) {
                
    $messages stripslashes(trim($_POST['message']));
            print 
    "Errore message
    "
    ;    
            } else {
                
    $messages trim($_POST['message']);
            }
        }

        
    //  If there is no error, send the email
        
    if ( !$hasError ) {
            
    $emailTo 'mattia@weston.it'//destination email address here
            
    $body "
            Nome e Cognome: 
    $name \n\n
            Telefono: 
    $telephone \n\n
            Fax: 
    $fax \n\n
            Email: 
    $email \n\n
            Indirizzo: 
    $address \n\n
            Città: 
    $city \n\n
            Messaggio:\n 
    $message
            "
    ;
            
    $headers 'From: My Site <'.$emailTo.'>' "\r\n" 'Reply-To: ' $email;
            
    mail($emailTo$subject$body$headers);
            
    $emailSent true;
        }
    }
    ?>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
        <head>
            <title>form</title>        
        </head>

        <body id="contatti" onload="initialize()">
        
            <h3>Contact form</h3>
            
            <?php if(isset($hasError)) { //If errors are found ?>
                <p class="form-error" style="color:red">Messaggio di errore</p>
            <?php ?>
        
            <?php if(isset($emailSent) && $emailSent == true) { //If email is sent ?>
                <p class="form-success" style="color:green">Email inviata correttamente</p>
            <?php ?>
            
            <form id="contactform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
                    
                <label class="inlined" for="name">Nome e Cognome</label>
                <input type="text" class="input-text validate[required,custom[onlyLetter],length[0,50]]" id="name" name="name"  value="<?php echo $_POST['name'?>" />
        
                <label class="inlined" for="telephone">Telefono (optional)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyNumber],length[0,20]]" id="telephone" name="telephone" value="<?php echo $_POST['telephone'?>"/>
        
                <label class="inlined" for="fax">Fax (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyNumber],length[0,20]]" id="fax" name="fax" value="<?php echo $_POST['fax'?>"/>
                                                                
                <label class="inlined" for="email">Email</label>
                <input type="text" class="input-text validate[required,custom[email],length[0,50]]" id="email"  name="email" value="<?php echo $_POST['email'?>"/>
        
                <label class="inlined" for="address">Indirizzo (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,length[0,100]]" id="address" name="address" value="<?php echo $_POST['address'?>" />
                
                <label class="inlined" for="city">Citta' (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyLetter],length[0,50]]" id="city" name="city" value="<?php echo $_POST['city'?>" />
                
                <label class="textarea inlined" for="message">Messaggio</label>
                <textarea class="input-text validate[required,length[6,300]]" id="message" name="message" rows="6" cols="150"><?php echo $_POST['message'?></textarea>
        
                <input class="button" type="submit" value="invia" name="submit" />
                
            </form> 

        </body>
    </html>
    Il problema è che non funziona ancora perchè non mi permette di inserire gli spazi né all'interno degli input text né all'interno della textarea: es. nel campo address non mi lascia inserire "via verdi" ma dovrei inserirlo senza spazio "viaverdi", solo così mi lascia inviare il messaggio senza ritornarmi errore.

    Ecco a voi quindi il domandone finale:
    come modificare i vari
    Codice PHP:
    eregi("^[a-zA-Z]+$"
    Codice PHP:
    eregi("^[0-9]+$"
    Codice PHP:
    eregi("^[a-zA-Z0-9]+$"
    affinché mi si permetta di inserire delle parole "staccate" da spazi senza che il codice mi si incazzi?

    Grazie di nuovo

  7. #7
    Hei! nessuno che ha voglia di darmi una mano?
    Nel frattempo ho cercato di arrangiarmi da solo ed ho modificato la validazione sostituendo le funzioni deprecate (eregi) con preg_match. Ho anche cercato di utilizzare le funzioni filter e sanitize di php5.

    Ecco qui il mio nuovo codice:
    Codice PHP:
    <?php
    //If the form is submitted
    if( isset($_POST['submit']) )
    {
        
    //  NAME (requested) field validation
        
    if (trim($_POST['name']) == '') {
            
    $hasError true;
            echo 
    "errore: NAME vuoto
    "
    ;
        } else {
            
    $name filter_input(trim($_POST['name']), FILTER_SANITIZE_STRING);
        } 
        
        
    //  TELEPHONE (optional) field validation
        
    if (!preg_match('/[0-9]+/'trim($_POST['telephone']))) {
            
    $hasError true;
            echo 
    "errore: TELEPHONE con caratteri non permessi
    "
    ;        
        } else {
            
    $telephone filter_input(trim($_POST['telephone']), FILTER_SANITIZE_NUMBER_INT);
        }
        
        
    //  FAX (optional) field validation
        
    if (!preg_match('/[0-9]+/'trim($_POST['fax']))) {
            
    $hasError true;
            echo 
    "errore: FAX con caratteri non permessi
    "
    ;
        } else {
            
    $fax filter_input(trim($_POST['fax']), FILTER_SANITIZE_NUMBER_INT);
        }
        
        
    //  EMAIL (requested) field validation
        
    if (trim($_POST['email']) == '') {
            
    $hasError true;
            echo 
    "errore: EMAIL vuoto
    "
    ;
        } else if (!
    filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL)) {
            
    $hasError true;
            echo 
    "errore: EMAIL con caratteri non permessi
    "
    ;    
        } else {
            
    $email filter_input(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
        }
        
        
    // ADDRESS (optional) field validation
        
    if (!preg_match('/[a-zA-Z0-9]+/'trim($_POST['address']))) {
            
    $hasError true;
            echo 
    "errore: ADDRESS con caratteri non permessi
    "
    ;    
        } else {
            
    $address filter_input(trim($_POST['address']), FILTER_SANITIZE_STRING);
        }

        
    // CITY (optional) field validation
        
    if (!preg_match('/[a-zA-Z]+/'trim($_POST['city']))) {
            
    $hasError true;    
            echo 
    "errore: CITY con caratteri non permessi
    "
    ;    
        } else {
            
    $city filter_input(trim($_POST['city']), FILTER_SANITIZE_STRING);
        }
        
        
    //  Check to make sure MESSAGE (requested) were entered
        
    if (trim($_POST['message']) == '') {
            
    $hasError true;
            echo 
    "errore: MESSAGGIO vuoto";
        } else {
            if(
    function_exists('stripslashes')) {
                
    $message stripslashes(trim($_POST['message']));
            } else {
                
    $message filter_input(trim($_POST['message']), FILTER_SANITIZE_SPECIAL_CHARS);
            }
        }

        
    //  If there is no error, send the email
        
    if ( !$hasError ) {
            
    $emailTo 'indirizzo@dominio.est'//destination email address here
            
    $body "Nome e Cognome: $name \n\n
            Telefono: 
    $telephone \n\n
            Fax: 
    $fax \n\n
            Email: 
    $email \n\n
            Indirizzo: 
    $address \n\n
            Città: 
    $city \n\n
            Messaggio:\n 
    $message";
            
    $headers 'From: Contact Form Sito <'.$emailTo.'>' "\r\n" 'Reply-To: ' $email;
            
    mail($emailTo$subject$body$headers);
            
    $emailSent true;
        }
    }
    ?>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
        <head>
            <title>form</title>        
        </head>

        <body id="contatti" onload="initialize()">
        
            <?php if(isset($hasError)) { //If errors are found ?>
                <hr /><p class="form-error" style="color:red">Messaggio di errore</p><hr />
            <?php ?>
        
            <?php if(isset($emailSent) && $emailSent == true) { //If email is sent ?>
                <hr /><p class="form-success" style="color:green">Email inviata correttamente</p><hr />
            <?php ?>
        
            <h3>Contact form</h3>
                    
            <form id="contactform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
                    
                <label class="inlined" for="name">Nome e Cognome</label>
                <input type="text" class="input-text validate[required,custom[onlyLetter],length[0,50]]" id="name" name="name"  value="<?php echo $_POST['name'?>" />

        
                <label class="inlined" for="telephone">Telefono (optional)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyNumber],length[0,20]]" id="telephone" name="telephone" value="<?php echo $_POST['telephone'?>"/>

        
                <label class="inlined" for="fax">Fax (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyNumber],length[0,20]]" id="fax" name="fax" value="<?php echo $_POST['fax'?>"/>

                                                                
                <label class="inlined" for="email">Email</label>
                <input type="text" class="input-text validate[required,custom[email],length[0,50]]" id="email"  name="email" value="<?php echo $_POST['email'?>"/>

        
                <label class="inlined" for="address">Indirizzo (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,length[0,100]]" id="address" name="address" value="<?php echo $_POST['address'?>" />

                
                <label class="inlined" for="city">Citta' (opzionale)</span></label>
                <input type="text" class="input-text validate[optional,custom[onlyLetter],length[0,50]]" id="city" name="city" value="<?php echo $_POST['city'?>" />

                
                <label class="textarea inlined" for="message">Messaggio</label>
                <textarea class="input-text validate[required,length[6,300]]" id="message" name="message" rows="6" cols="150"><?php echo $_POST['message'?></textarea>

        
                <input class="button" type="submit" value="invia" name="submit" />
                
            </form> 

        </body>
    </html>
    Nonostante ciò però ci sono ancora diversi errori:
    1. il form erroneamente NON invia la mail se i campi opzionali (telephone, fax, address, city) non sono compilati
    2. nella mail con vengono stampate le stringhe inserite nel form se non quella del message (probabilmente ho commesso qualche errore nello scrivere le funzioni di filter e sanitize)

    Qualche dritta da chi ha l'occhio più allenato di me?
    Thanks...

  8. #8
    Originariamente inviato da enjoysuperfly
    come modificare i vari
    Codice PHP:
    eregi("^[a-zA-Z]+$"
    Codice PHP:
    eregi("^[0-9]+$"
    Codice PHP:
    eregi("^[a-zA-Z0-9]+$"
    affinché mi si permetta di inserire delle parole "staccate" da spazi senza che il codice mi si incazzi?
    io non sono bravo con le espressioni regolari (utilizzo solo quelle "famose" pescate dalla rete)...
    PERO'

    1) eregi è un comando del php "deprecato" significa che pur se funzionante esso è stato sostituito da un comando "nuovo" che svolge analoga funzione
    preg_match()

    http://forum.masterdrive.it/php-14/f...precata-44184/

    2) per includere gli spazi (mi sembra...) che basti aggiungerlo all'interno della espressione regolare così...
    Codice PHP:
    eregi("^[a-zA-Z ]+$"
    Codice PHP:
    eregi("^[0-9 ]+$"
    Codice PHP:
    eregi("^[a-zA-Z0-9 ]+$"
    ... ma non essendo un esperto provale bene e aspetta consigli più autorevoli del mio

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    143
    Originariamente inviato da enjoysuperfly
    Hei! nessuno che ha voglia di darmi una mano?
    Nel frattempo ho cercato di arrangiarmi da solo ed ho modificato la validazione sostituendo le funzioni deprecate (eregi) con preg_match. Ho anche cercato di utilizzare le funzioni filter e sanitize di php5.
    Ti do una mano io, studia il PHP, se non ho capito male stai facendo un lavoro per un cliente, quindi é il tuo mestiere, devi solo studiarti le basi de PHP.
    Hai mai visto un muratore che non sa impastare il cemento?

  10. #10
    Ti do una mano io, studia il PHP, se non ho capito male stai facendo un lavoro per un cliente, quindi é il tuo mestiere, devi solo studiarti le basi de PHP. Hai mai visto un muratore che non sa impastare il cemento?
    È ciò che sto cercando di fare carissimo kiboo. Dalle mie parti si dice: chiedere è lecito e rispondere è cortesia.
    Non sto cercando qualcuno che faccia il lavoro al posto mio, solo qualche persona con un po' più di familiarità con il codice rispetto a me disposta a darmi qualche dritta.
    Sò che probabilmente il modo migliore per studiare e capire php è cominciare dalle basi, ma questo è un lavoro che devo portare a termine nell'immediato senza la possibilità di prendermi un mese di "ferie" per studiare a tempo pieno questo linguaggio.

    buona vita!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.