contact form action php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

MANGANIX MANGANIX

MANGANIX MANGANIX

15/05/2015 22:44:33
Quote Anchor link
Hoi,


ik ben bezig met de redesign van de website: http://gamanga.com/

De contactform werkt niet zoals zou moeten:
wanneer ik alle velden invul, en op "send" klik, springt het naar de ingevoegde php pagina waar ik de captcha terug moet invullen en opnieuw op "send" moet klikken. Daar het meteen vanaf de de "index" pagina de mail zou moeten versturen en "thank you..." bericht in de contact sectie zou moeten weergeven.


Zouden jullie eens kunnen testen en bekijken wat er fout loopt? Ben er zelf niet uitgeraakt, omdat ik nog niet echt vertrouwd ben met PHP.


Alvast bedankt voor jullie tijd en advies.

Mvg,
Max

PS: indien jullie een goede tutorial weten voor een contact form met captcha, laat gerust weten.

invoeging PHP contactform in Index >>>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<div class="contactFormContainer">
        <form name="responsiveContactForm.php" method='post'>
            <p><strong>Name:</strong> <span class='required'>*</span></p>
            <input type='text'  name='name' value=''>
            <p><strong>Email address:</strong> <span class='required'>*</span></p>
            <input type='email'  name='email' value=''>
            <p><strong>Message:</strong> <span class='required'>*</span></p>
            <textarea  name='message'></textarea>
            <p><strong>How much is 4+4?</strong> <span class='required'>*</span></p>            
            <input type='text'  name='captcha' value=''><br/>
            <button>Send</button>
        </form>
    </div><!--contactFormContainer-->

PHP contactform >>>

<?php
session_start();
$php_self = $_SERVER['PHP_SELF'];
// on submit
if( isset($_POST[name]) && isset($_POST[email]) && isset($_POST[message]) && isset($_POST[captcha]) ){
    $name = $_POST[name];
    $email = $_POST[email];
    $message = $_POST[message];
    $captcha = $_POST[captcha];
    
    $error = 0;
    // name
    if( $name == "" ){ $error ++; $error_name = "class='error'"; }
    // email
    if( $email == "" ){ $error ++; $error_email = "class='error'"; }
    // message
    if( $message == "" ){ $error ++; $error_message = "class='error'"; }
    // captcha
    if( $captcha == "" || $captcha != $_SESSION[captcha]){ $error ++; $error_captcha = "class='error'"; }
 
    // no error, send email
    if( $error == 0){              
                        
        // your email address
        $address = "gamanga@outlook.com";
        
        // email subject
        $subject = "New message";
        // email content
        $content = "<strong>Name:</strong><br/>$name<br/><strong>Email address:</strong><br/><strong>Message:</strong><br/>$email<br/>$message";
        // html email
        $email_content = "<!doctype html><head><meta charset='utf-8'><title>".$subject."</title>";
        $email_content .= "</head><body>";
        $email_content .= $content;
        $email_content .= "</body></html>";                    
                
        // headers for html email
        $headers  = 'MIME-Version: 1.0' . "/r/n";
        $headers .= 'Content-type: text/html; charset=utf-8' . "/r/n";
        $headers .= "From: 1stWebMagazine.com <web@1stwebmagazine.com>" . "/r/n";
        // send email
        mail($address, $subject, $email_content, $headers);        
        
        // reset variables
        $name = ""; $email = ""; $message = "";
        $mail_sent = 1;                                                            
    }
}

 
// captcha
$num = rand(1, 20);
$num2 = rand(1, 9);    
$verif = $num . "+" . $num2;
$_SESSION[captcha] = $num + $num2;      
 
if( $mail_sent == 1 ){
    echo "<h1>Thank you for your message! We'll be in touch soon.</h1>";
}
else {
    echo "
    <form action='"
.$php_self."' method='post'>
    <p><strong>Name:</strong> <span class='required'>*</span></p>
    <input type='text' "
.$error_name." name='name' value='".$name."'>
    <p><strong>Email address:</strong> <span class='required'>*</span></p>
    <input type='email' "
.$error_email." name='email' value='".$email."'>
    <p><strong>Message:</strong> <span class='required'>*</span></p>
    <textarea "
.$error_message." name='message'>".$message."</textarea>
    <p><strong>How much is "
.$verif."?</strong> <span class='required'>*</span></p>            
    <input type='text' "
.$error_captcha." name='captcha' value=''><br/>
    <button>Send</button>
    </form>"
;
}

?>
Gewijzigd op 16/05/2015 00:29:44 door MANGANIX MANGANIX
 
PHP hulp

PHP hulp

06/12/2021 15:17:27
 
- Ariën -
Beheerder

- Ariën -

15/05/2015 23:10:13
Quote Anchor link
Misschien is wat relevante code wel handig (tussen code-tags).
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/05/2015 23:52:34
Quote Anchor link
Lees eerst even mijn reactie in dit topic.

http://www.phphulp.nl/php/forum/topic/quiz/97903/last/

Die Thankyou html zou een nieuwe pagina moeten zijn.

pagina 1: contactform met daarboven validatie
pagina 2: thankyou.

Ik heb naar het mooie design gekeken dat je hebt gemaakt. Kun je het niet beter het formulier met jQuery.ajax() verzenden en als er een json string met "Ok" terug komt dan het formulier vervangen voor thankyou html?
Gewijzigd op 16/05/2015 00:06:43 door Frank Nietbelangrijk
 
MANGANIX MANGANIX

MANGANIX MANGANIX

16/05/2015 00:34:32
Quote Anchor link
Quote:
Ik heb naar het mooie design gekeken dat je hebt gemaakt.

Hartelijk dank!

Quote:
Kun je het niet beter het formulier met jQuery.ajax() verzenden en als er een json string met "Ok" terug komt dan het formulier vervangen voor thankyou html?

dit is echt chinees voor mij. HTML & CSS gaat nog OK voor mij, maar PHP¨, Scripsts... daar ben ik helaas nog geen held in. :(
 
- Ariën -
Beheerder

- Ariën -

16/05/2015 00:56:56
Quote Anchor link
Dan zul je je toch in jQuery moeten verdiepen. Ik denk zelf ook dat dit de handigste manier is, zodat de actieve pagina niet hoeft te refreshen.

Even snel uit mijn hoofd kom ik op dit uit:

Zet dit in de head-sectie van je site, zodat de jQuery geladen wordt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>


Voeg deze javascript toe aan je site:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(function() {
    $("#jouwform").submit(function(e) {
        e.preventDefault();
         $.ajax({
                url: 'send.php',
                type: 'post',
                dataType: 'html',
                data: $("#jouwform").serialize(),
                success: function(data) {
                           if(data=='OK') {
                $("#status").html("Gelukt!");
                } else {
                $("#status").html("Mislukt!");    
               }
                         }
            });
    });
});


#jouwform is het ID van je form-tag
#status is een HTML-element (span?) voor de uitkomst van het jQuery-script of het script verstuurd is.

En met $_POST kan je de data ophalen in 'send.php'
Gewijzigd op 16/05/2015 08:40:31 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.