Visualizzazione dei risultati da 1 a 10 su 10

Discussione: form email

  1. #1

    form email

    salve a tutti, è la prima volta che scrivo

    sto finendo di realizzare un sito personale ed ho dei problemi con il modulo per l'invio della mail

    premetto che non ho una grande esperienza html, php ecc.. ma ci sono riuscito scaricando un template e modificandolo

    sto provando in locale il sito con wamp ma non riesco proprio a far funzionare il madulo

    ecco l'html:

    codice HTML:
                <form id="contact-form" class="contact-form" action="#">
                    <p class="contact-name">
                        <input id="contact_name" type="text" placeholder="Full Name" value="" name="name" />
                    </p>
                    <p class="contact-email">
                        <input id="contact_email" type="text" placeholder="Email Address" value="" name="email" />
                    </p>
                    <p class="contact-message">
                        <textarea id="contact_message" placeholder="Your Message" name="message" rows="15" 
    
    cols="40"></textarea>
                    </p>
                    <p class="contact-submit">
                        <a id="contact-submit" class="submit" href="#">Send Your Email</a>
                    </p>
                    
                    <div id="response">
    e questo è il php:

    Codice PHP:
    <?php
    /*
    * Contact Form Class
    */


    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 

    GMT'
    );
    header('Content-type: application/json');

    $admin_email 'miamail@mail.it'// Your Email
    $message_min_length 

    1// Min Message Length


    class Contact_Form{
        function 
    __construct($details$email_admin$message_min_length){
            
            
    $this->name stripslashes($details['name']);
            
    $this->email trim($details['email']);
            

    $this->subject 'Contact from Your Website'// Subject 
            
    $this->message stripslashes($details

    ['message']);
        
            
    $this->email_admin $email_admin;
            
    $this->message_min_length 

    $message_min_length;
            
            
    $this->response_status 1;
            
    $this->response_html '';
        }


        

    private function 
    validateEmail(){
            
    $regex '/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]

    {2,6}(?:\.[a-z]{2})?)$/i'
    ;
        
            if(
    $this->email == '') { 
                return 
    false;
            } 

    else {
                
    $string preg_replace($regex''$this->email);
            }
        
            return 

    empty(
    $string) ? true false;
        }


        private function 
    validateFields(){
            
    // Check name
            
    if(!$this-

    >
    name)
            {
                
    $this->response_html .= '<p>Please enter your name</p>';
                

    $this->response_status 0;
            }

            
    // Check email
            
    if(!$this->email)
            {
            

        
    $this->response_html .= '<p>Please enter an e-mail address</p>';
                
    $this->response_status 

    0;
            }
            
            
    // Check valid email
            
    if($this->email && !$this->validateEmail

    ())
            {
                
    $this->response_html .= '<p>Please enter a valid e-mail address</p>';
                

    $this->response_status 0;
            }
            
            
    // Check message length
            
    if(!$this->message 

    || strlen($this->message) < $this->message_min_length)
            {
                
    $this->response_html .= '<p>Please 

    enter your message. It should have at least '
    .$this->message_min_length.' characters</p>';
                
    $this-

    >
    response_status 0;
            }
        }


        private function 
    sendEmail(){
            
    $mail mail($this->email_admin

    $this->subject$this->message,
                 
    "From: ".$this->name." <".$this->email.">\r\n"
                
    ."Reply-To: 

    "
    .$this->email."\r\n"
            
    ."X-Mailer: PHP/" phpversion());
        
            if(
    $mail)
            {
            

        
    $this->response_status 1;
                
    $this->response_html '<p>Thank You!</p>';
            }
        }


        

    function 
    sendRequest(){
            
    $this->validateFields();
            if(
    $this->response_status)
            {
            

        
    $this->sendEmail();
            }

            
    $response = array();
            
    $response['status'] = $this-

    >
    response_status;    
            
    $response['html'] = $this->response_html;
            
            echo 

    json_encode($response);
        }
    }


    $contact_form = new Contact_Form($_POST$admin_email$message_min_length);
    $contact_form-

    >
    sendRequest();

    ?>
    il file php si trova nella cartella root/_include/php/contact.php

    sembra che il form non comunichi con il php o non so...
    ho lasciato aperte le porte 80 e 25 ed il sito è accessibile dall'esterno della rete

    qualcuno mi aiuta?

    grazie mille a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Intanto per vedere se lo script php riceve correttamente i dati del form, invece di inviare un'email, stampali sul video.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Intanto per vedere se lo script php riceve correttamente i dati del form, invece di inviare un'email, stampali sul video.
    Cosa vuol dire?

  4. #4
    Qualcuno mi aiuta?

  5. #5
    ragazzi. perfavore aiutatemi, per voi sarà un gioco da ragazzi...

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Vuol dire fare un echo dei dati che usi per creare l'email per vedere se le variabili che usi hanno dei valori oppure no.

  7. #7
    inserendo dati errati nei campi da compilare e premendo il tasto di invio, mi compaiono a video messaggi tipo "insert valid email address ecc..." e questo che intendi?

    ma se inserisco tutti i dati correttamente non succede nulla, neanche si resettano i campi... anzi poggiando il mouse sul tasto di invio mi fa vedere il link della home

    poi non ho capito una cosa, nel codice html al parametro "action" non dovrebbe esserci un riferimento al file php?
    nel codice del template c'è solo #

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    No, dentro la classe Contact_Form, invece di eseguire l'invio della mail (commenta la riga relativa all'invio in modo che non venga eseguita), aggiungi degli echo per stampare le variabili che usi per generare l'email e vedere se contengono i dati giusti.
    Se non contengono niente, vuol dire che il problema non è l'invio dell'email, ma il recupero dei dati provenienti dal form.

  9. #9
    ok, ho capito, ma il problema è che, come ho detto prima, io sono completamente digiuno di html e php
    mi potresti fare un esempio perfavore? grazie mille

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    all'inizio del tuo codice, modifica questo per vedere se i valori che arrivano dal form sono corretti e valorizzati

    Codice PHP:
    <?php
    /*
    * Contact Form Class
    */

    // inizio debug dati form (questa sezione commentala quando risolvi per provare a mandare l'email)
    echo "<pre>";
    var_dump($_POST);
    echo 
    "</pre>;
    // fine debug dati form 

    /* commento gli header per non sollevare un errore (da decommentare per mandare l'email)

    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json');

    */

    $admin_email = 'miamail@mail.it'; // Your Email
    $message_min_length = 1;

    // resto del codice

    Verifica che la visualizzazione degli errori sia abilitata per tutti i tipi di errore, se non lo è aggiungi in cima al codice queste due dichiarazioni (da non usare una volta in produzione con lo script)

    Codice PHP:
    error_reporting(E_ALL);
    ini_set('display_errors'1); 

    in questo modo, ogni errore sarà visualizzato e, dopo che sarai sicuro che il form passa in maniera corretta i dati allo script che invia le email, potrai vedere cosa va storto (io penso che sia la configurazione del php che non è a punto per l'invio di email)

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