Ajuda Contact Form

m@rkes

Power Member
Boas, tudo bem?

Vim aqui pedir ajuda porque estou a tentar fazer um pequeno portfolio com o pouco html que sei e até agora safei-me. Só me falta mesmo o formulário de contacto, que não parece funcionar. Pesquisei no google e encontrei este que me pareceu porreiro, e tudo parece funcionar...Ele indica que é preciso preencher os campos obrigatórios e até avisa que o e-mail foi enviado...mas o problema é que eu nunca recebo qualquer tipo de e-mail...já andei a ler umas coisas de php e etc e já me aconselharam a trocar o $_request por $_post, mas tudo em vão. E sim...troquei o campo 'your mail adress' pelo meu e-mail profissional.

Alguém me pode dar uma ajuda? Ficava eternamente agradecido. Obrigado e boa noite :)

PS: Se não der, paciência, coloco o meu e-mail directamente no site. Se bem que isso seja isco para spams. (acho eu)



HTML
Código:
<form id="contact" action="#">
                          <fieldset>
                              <label for="name" id="name_label">Your User Name: <span class="required">*</span></label>
                              <input type="text" name="name" id="name" size="50" value="" class="text-input" />
                              <label for="email" id="email_label">Your Email Address: <span class="required">*</span></label>
                              <input type="text" name="email" id="email" size="50" value="" class="text-input" />
                              <label for="subject" id="subject_label">Subject</label>
                              <input type="text" name="subject" id="subject"  value="" class="text-input" />
                              <label for="msg" id="msg_label">Your Message: <span class="required">*</span></label>
                              <textarea cols="60" rows="10" name="msg" id="msg" class="text-input"></textarea>
                              <br />
                              <input type="submit" name="submit" class="button" id="submit_btn" value="Send Message &rarr;"/><br class="clear" />
                          <span class="error" id="name_error">Please enter name !</span>
                          <span class="error" id="email_error">Please enter email address !</span>
                          <span class="error" id="email_error2">Please enter valid email address !</span>
                          <span class="error" id="msg_error">Please enter message !</span>
                          </fieldset>
                        </form>
                    </div>


JS
Código:
jQuery(function() {
  jQuery('.error').hide();
  var messagetext = jQuery("textarea#msg");
  messagetext.focusout(function(){
        if (messagetext.val() == ''){messagetext.text('Message'); }
  });
  messagetext.focus(function(){
        if (messagetext.val() == 'Message') {messagetext.text(''); }                       
  });
  jQuery(".button").click(function() {
        // validate and process form
        // first hide any error messages
    jQuery('.error').hide();
      var name = jQuery("input#name").val();
        if (name=="Name" || name == "") {
      jQuery("span#name_error").show();
      jQuery("input#name").focus();
      return false;
    }
      var email = jQuery("input#email").val();
      if (email == "Email" || email == "") {
      jQuery("span#email_error").show();
      jQuery("input#email").focus();
      return false;
    }
    
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    if(!emailReg.test(email)) {
    jQuery("span#email_error2").show();
    jQuery("input#email").focus();
      return false;
    }
    
      var subject = jQuery("input#subject").val();


      var msg = jQuery("textarea#msg").val();
      if (msg == "Message" || msg == "") {
      jQuery("span#msg_error").show();
      jQuery("textarea#msg").focus();
      return false;
    }
        
        var dataString = 'name='+ name + '&email=' + email + '&subject=' + subject + '&msg=' + msg;
        //alert (dataString);return false;
        
      jQuery.ajax({
      type: "POST",
      url: "process.php",
      data: dataString,
      success: function() {
        jQuery('#contactform').html("<div id='message'></div>");
        jQuery('#message').html("<b>Contact Form Submitted!</b>")
        .append("<p>We will be in touch soon.</p>")
        .hide()
        .fadeIn(1500, function() {
          jQuery('#message');
        });
      }
     });
    return false;
    });
});


PHP
Código:
<?php 
$emailTo = 'your mail adress'; 
$subject = 'Template Contact Form'; 
$name=$_REQUEST['name']; 
$email=$_REQUEST['email']; 
$msg=$_REQUEST['msg']; 


$body = "Name: $name \n\nEmail: $email \n\nMessage: $msg"; 
$headers = 'From: '.$name.' <'.$email.'>' . "\r\n" . 'Reply-To: ' . $email; 


mail($emailTo, $subject, $body, $headers); 
?>
 
Em principio e partindo do pressuposto que tens tudo como deve ser só falta mesmo mudares o

<form id="contact" action="#">
para isto
<form action="" method="post">

se não me engano o action="" abre na própria página e se o form de contacto estiver noutra página tens de indicar o caminho.

muda também o $_REQUEST para $_POST no ficheiro PHP

ainda no ficheiro PHP podes meter o $emailTO com o teu email.

e finalmente e não querendo alarmar
"PS: Se não der, paciência, coloco o meu e-mail directamente no site. Se bem que isso seja isco para spams. (acho eu)"

com o contact form que tens podes ser vitima se spam na mesma já que não tens nada do tipo captcha, e podes também ser vitima de sql_injection que é o mesmo que dar de mão beijada o servidor ao atacante.

experimenta isto
$name = strip_tags(trim($_POST['name']));
$email = trim($_POST['email']);
$msg = htmlentities(trim($_POST['msg']));

o trim e htmlentities faz com que o que se escreve não seja executado e vá apenas como texto.
 
Última edição:
Troquei o

<form id="contact" action="#">

por
<form action="" method="post">

E o $_REQUEST para $_POST no ficheiro PHP. O ficheiro php já tinha o meu email. E também coloquei o trim agora
 
Eu percebi que tinhas editado, e modifiquei tudo, conforme indicaste no teu post!

Vou tentar encontrar outro que funcione...
Mas olha, obrigado pelo teu tempo. :)
 
Última edição:
sim, como deve ser, agora estou a ter problemas é em implementar o validation.... :S

sem o validation funciona como deve ser

tens mensagem...

EDIT1:
Esqueci-me de escrever na mensagem....
o <script type="text/javascript" src="validation.js"></script>
encontras aquio código para o ficheiro
http://jorenrapini.com/posts/validation/validation.js

tens de criar um ficheiro validation.js e meter o devido caminho para funcionar.
Se por acaso quiseres adicionar algum campo ao formulário que queiras que seja obrigatório adicionas no validation.js
// Place ID's of all required fields here.
required = ["name", "email", "message"];
no $emailTO eu meti lá [email protected] tens de alterar para o teu.
O CSS que está no que te mandei podes meter no CSS geral que não há problema, assim arrumas um bocado mais a casa.
 
Última edição:
Back
Topo