Contactform Bootstrap verzenden na PHP/javascript validatie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Silvos
  • Registratie: November 2005
  • Laatst online: 03:58
Beste tweakers,

Ik ben nu al enige tijd bezig met het maken van een contact formulier op mijn website. Nu wilde ik een actieve validatie en dit is inmiddels gelukt. Echter ik weet niet hoe ik de mail nu daadwerkelijk moet verzenden.

Ik maak gebruik van een html form in combinatie met een javascript en een PHP script voor de validatie. Maar daarna loop ik vast met het verzenden van de mail.

HTML code
code:
1
2
3
<form id='form1' method='post' action="send_form_mail.php">
<input id='firstname' class='form-control input-md' placeholder='Naam' data-vreq='1'/>
<a class='btn btn-md btn-primary' data-vsubmit='1' data-vfunc='doSomething' data-vclear='1'>Submit</a>


PHP validator
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?
$vtype = $_REQUEST['vtype'];
$vvalue = $_REQUEST['vvalue'];
$validation = new Validation;
$validation->validate($vtype, $vvalue);

class Validation
{
    
    private $email,
            $phone_CA,
            $postal_CA;

    function __construct() 
    {
        $this->email = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/'; 
        $this->phone_CA = '/^(\+?)(1?)(\-?)(\s?)(\.?)(\(?)[2-9][0-9][0-9](\)?)(\-?)(\s?)(\.?)(([2-9][2-9][2-9])|([2-9][0-9]([2-9]|0))|([2-9]([2-9]|0)[0-9]))(\-?)(\s?)(\.?)[0-9]{4}$/';  //Canadian phone numbers
        $this->postal_CA = '/^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}(\-?)(\s?)(\.?)\d{1}[A-Z]{1}\d{1}$/i';  //Canadian postal code
        
    }
    
    function validate($_type, $_value)
    {
        switch ($_type) 
        {
            case 'phone_CA':
                if($_value = preg_match($this->phone_CA, $_value))
                   echo 1;
                 else 
                   echo "Please enter a valid phone number.";
               break;
               
            case 'email':
                if($_value = preg_match($this->email, $_value))
                   echo 1;
                 else 
                   echo "Please enter a valid email.";
               break;
               
            case 'postal_CA':
                if($_value = preg_match($this->postal_CA, $_value))
                   echo 1;
                 else 
                   echo "Please enter a valid postal code.";
               break;
 $to = "voorbeeld@voorbeeld.nl";
 $subject = "Hi!";
 $body = "Form is successfully validated by " + $_GET['name'];
 if (mail($to, $subject, $body)) {
   echo("<p>Message successfully sent!</p>");
  } else {
   echo("<p>Message delivery failed...</p>");
  }
        }
        die;
    }

}


PHP mail
code:
1
2
3
4
5
6
7
8
9
10
<?php
 $to = "voorbeeld@voorbeeld.nl";
 $subject = "Hi!";
 $body = "Form is successfully validated by " + $_GET['name'];
 if (mail($to, $subject, $body)) {
   echo("<p>Message successfully sent!</p>");
  } else {
   echo("<p>Message delivery failed...</p>");
  }
 ?>


Bedankt voor eventueel advies.

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 18:20

AW_Bos

Liefhebber van nostalgie... 🕰️

Een mail versturen is geen onderdeel van een Validation-class. Die hoort uitsluitend te valideren.
Ook hoort een class niet te echo'en.

Je zult moeten kijken waar die validationclass wordt aangeroepen en daar kijken of er een boolean uitkomt (true/false)

Op het moment dat die true is, dan moet je mailen. Dit kan met de PHP's mail() functie, maar je hebt ook kant-en-klare pakketten zoals PHPmailer, die een mail makkelijk weg kunnen sturen.

[ Voor 12% gewijzigd door AW_Bos op 30-03-2015 21:24 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • Silvos
  • Registratie: November 2005
  • Laatst online: 03:58
beste AW_Bos,

Bedankt voor je reactie. Ik snap de logica wel maar ik ben een beetje roestig met PHP. Vandaar dat ik op zoek ging naar tutorials. Echter tutorials gaan of over het verzenden van de mail zelf of over het valideren ervan maar niet de stap daartussen.

Op dit moment valideert het form goed maar als ik op submit klik krijg ik een pop-up; je mail je gevalideerd en verzonden. Dat laatste is echter niet het geval.

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 16:21
Laat je de URL eens weten? Kan ik je website op mijn persoonlijke blacklist zetten, omdat ik nu al weet dat je mijn emailadres niet gaat accepteren. Gebruik liever iets zoals: http://isemail.info/

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 18:20

AW_Bos

Liefhebber van nostalgie... 🕰️

Laat eerst maar eens true of false returnen in je switch() in plaats van een echo, en haal die mailfunctie daar weg.
Dan zijn we een stap verder.

[ Voor 28% gewijzigd door AW_Bos op 30-03-2015 22:12 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes