Het versturen van de e-card

Je kijkt dus eerst of het 'formulier' verzonden is. Zo niet, laat dan de 4 ecards zien (of meer). Ze kunnen via een radio keuze hun ecard kiezen. Daarnaast moeten ze de ontvangers naam en email + hun eigen email adres en naam invullen om een ecard te kunnen versturen. Als er eenmaal op de knop versturen is gedrukt zal er gekeken worden of alles is ingevuld en of het e-mail adres wel klopt. Ook zet hij alle speciale karakters om in entities met de functie htmlentities() om misbruik met bijv. javascript etc. te voorkomen.

VERGEET NIET DE URL ADRESSEN TE WIJZIGEN IN HET SCRIPT!

index.php

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?
    echo "<html>";
    echo "<head><title>Verstuur een e-card!</title>";
    echo "<style>";
    echo "body { background-color: #ffffff; font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #000000 }";
    echo "a { color: #000000; text-decoration: underlined }";
    echo "</style>";
    echo "</head>";
    echo "<body>";

    // maak verbinding met de database
    // HIER DUS JE EIGEN MYSQL GEGEVENS

    if (!@mysql_select_db("database_naam", @mysql_connect("localhost", "database_user", "database_pass")))
    {

        echo "er kon geen database connectie gemaakt worden.";
        exit();
    }


    // ZET HIER HET ONDERWERP VAN DE ECARD!
    $email_onderwerp = "Je hebt een e-card ontvangen!";

    // e-mail validator
    function email_validator($email)
    {

        if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
            $valid = "1";

        return $valid;
    }

    
    // random pass generator
    function random_pass($length, $caps)
    {

        if ($caps == 1)
            $letters = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1234567890";
        else
            $letters = "abcdefghijklmnopqrstuvwxyz1234567890";
        
        for ($i = 1; $i <= $length; $i++)
        {

            $randnum = rand(0, strlen($letters));
            
            if ($i == 1)
                $randchar = substr($letters, $randnum, 1);
            else
                $randchar .= substr($letters, $randnum, 1);
        }

    
        return $randchar;
    }

    
    // check of het formulier is verzonden
    // zo ja, valideer de e-mail adressen
    // en zet speciale karakters om

    if ($_POST['submit'])
    {

        $afz_email = htmlentities($_POST['afz_email']);
        $ontv_email = htmlentities($_POST['ontv_email']);
        $ontv_naam = htmlentities($_POST['ontv_naam']);
        $afz_naam = htmlentities($_POST['afz_naam']);
        $bericht = htmlentities($_POST['bericht']);
        
        $check_ontv_email = email_validator($_POST['ontv_email']);
        $check_afz_email = email_validator($_POST['afz_email']);        
    }


    // bekijk dus eerst of het formulier is verzonden is en of
    // alle variabele goed zijn

    if ($_POST['submit'] && $afz_email && $ontv_email && $afz_naam && $ontv_naam && $bericht && $check_ontv_email && $check_afz_email && $_POST['ecards'])
    {

        // maak een random key aan
        $ophaal_key = random_pass(10, 1);
        if (strlen($ophaal_key) == 9)
            $ophaal_key = $ophaal_key . "G";
        elseif (strlen($ophaal_key) == 8)
            $ophaal_key = $ophaal_key . "Ez";
        
        // zet datum verstuurd
        $datum = date("d.m.Y H:i");
        
        // zet de ecard informatie in de database
        $sql = "INSERT INTO ecards (id, ontv_naam, ontv_email, bericht, afz_naam, afz_email, datum, afbeelding, ekey) VALUES (";
        $sql .= "''";
        $sql .= ", " . $ontv_naam;
        $sql .= ", " . $ontv_email;
        $sql .= ", " . $bericht;
        $sql .= ", " . $afz_naam;
        $sql .= ", " . $afz_email;
        $sql .= ", " . $datum;
        $sql .= ", " . $_POST['ecards'];
        $sql .= ", " . $ophaal_key;
        $sql .= ")";
        $res = mysql_query($sql);
        
        // kijk of de query succesvol was
        if ($res)
        {

        
            // het bericht dat een e-card is ontvangen
            $email_msg = "==================================================\n";
            $email_msg .= "Je hebt een e-card ontvangen!!!\n";
            $email_msg .= "==================================================\n\n";
            
            $email_msg .= "Ben je benieuwd door wie deze e-card verstuurd is?\n";
            $email_msg .= "Haal dan snel je e-card op!!\n\n";
            
            $email_msg .= "http://www.phphulp.nl/ecards/ecard.php?key=$ophaal_key\n\n";
            
            $email_msg .= "De e-card is verzonden via phphulp.nl/ecards\n";
            
            // verstuur bericht dat er een e-card is ontvangen
            if (mail($ontv_naam . "<" . $ontv_email . ">", $email_onderwerp, $email_msg, "From: PHPhulp ECARD <noreply@phphulp>"))
                echo "<p>De e-card is verzonden!</p>";
            else
                echo "<p>Sorry, de e-card is niet verzonden. Probeer het opnieuw.</p>";
        }

        else
        {
            echo "De ecard is niet verstuurd. Probeer het opnieuw.";
        }
    }

    // laat formulier zien!
    else
    {
        // bekijk of het al eerder verzonden was
        if ($_POST['submit'])
            echo "<b>Je bent enkele velden vergeten in te vullen (of een ecard te kiezen) of je hebt de e-mail adressen niet correct ingevuld.</b><p>";
        
        // zet de namen van de ecards in een array
        $ecard[0] = "love.jpg";
        $ecard[1] = "beterschap.jpg";
        $ecard[2] = "gefeliciteerd.jpg";
        $ecard[3] = "spijt.jpg";
        
        // tel de ecards
        $tot_ecards = count($ecard) - 1;
        
        // zet de URL naar de ecards (niet eindigend op een slash)
        $url = "http://www.phphulp.nl/ecards";
        
        // begin form
        echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
        
        // begin HTML table
        echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"10\">";
        
        // laat de ecards zijn
        $tr = 1;
        
        for ($i = 0; $i <= $tot_ecards; $i++)
        {

            if ($tr == 1)
                echo "<tr><td><img src=\"$url/thumb_$ecard[$i]\"><br><input type=\"radio\" name=\"ecards\" value=\"$ecard[$i]\"></td>";
            elseif ($tr == 2)
            {

                echo "<td><img src=\"$url/thumb_$ecard[$i]\"><br><input type=\"radio\" name=\"ecards\" value=\"$ecard[$i]\"></td></tr>";
                $tr = 0;
            }

            
            $tr++;
        }

        
        // sluit HTML table
        echo "</table>";
        
        echo "Wat is de naam van ontvanger?<br>";
        echo "<input type=\"text\" name=\"ontv_naam\"><p>";
        
        echo "Wat is het e-mail adres van de ontvanger?<br>";
        echo "<input type=\"text\" name=\"ontv_email\"><p>";
        
        echo "Wat is jou naam?<br>";
        echo "<input type=\"text\" name=\"afz_naam\"><p>";
        
        echo "Wat is jou e-mail adres?<br>";
        echo "<input type=\"text\" name=\"afz_email\"><p>";
        
        echo "Je bericht wat de ontvanger zal zien:<br>";
        echo "<textarea name=\"bericht\" cols=\"55\" rows=\"12\"></textarea><p>";
        
        echo "<input type=\"submit\" name=\"submit\" value=\"E-card versturen\">";
        
        // sluit form
        echo "</form>";
    }

    
    echo "</body></html>";
?>

« Lees de omschrijving en reacties

Inhoudsopgave

  1. De kleine en grote e-cards
  2. De MySQL tabel
  3. Het versturen van de e-card
  4. Het ophalen van de e-card

PHP tutorial opties

 
 

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.