Contact formulier (Hosting probleem?)
Ik heb een probleem met een stuk codering.
Dit is het html gedeelte
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form name="ajax-form" id="ajax-form" action="formulier.php" method="post">
<label for="name">Naam: *
<span class="error" id="err-name">Vul alsjeblieft uw naam in</span>
</label>
<input name="name" id="name" type="text" />
<label for="subject">Onderwerp: *
<span class="error" id="err-name">Vul alsjeblieft een onderwerp in</span>
</label>
<input name="subject" id="subject" type="text" />
<label for="email">E-Mail: *
<span class="error" id="err-email">Vul alsjeblieft uw e-mail in</span>
<span class="error" id="err-emailvld">e-mail is niet geldig</span>
</label>
<input name="email" id="email" type="text" />
<label for="message">Commentaar:</label>
<textarea name="message" id="message"></textarea>
<div id="button-con"><button class="send_message" id="send">Verzenden</button></div>
<div class="error text-align-center" id="err-form">There was a problem validating the form please check!</div>
<div class="error text-align-center" id="err-timedout">The connection to the server timed out!</div>
<div class="error" id="err-state"></div>
</form>
<div id="ajaxsuccess">Successfully sent!!</div>
<label for="name">Naam: *
<span class="error" id="err-name">Vul alsjeblieft uw naam in</span>
</label>
<input name="name" id="name" type="text" />
<label for="subject">Onderwerp: *
<span class="error" id="err-name">Vul alsjeblieft een onderwerp in</span>
</label>
<input name="subject" id="subject" type="text" />
<label for="email">E-Mail: *
<span class="error" id="err-email">Vul alsjeblieft uw e-mail in</span>
<span class="error" id="err-emailvld">e-mail is niet geldig</span>
</label>
<input name="email" id="email" type="text" />
<label for="message">Commentaar:</label>
<textarea name="message" id="message"></textarea>
<div id="button-con"><button class="send_message" id="send">Verzenden</button></div>
<div class="error text-align-center" id="err-form">There was a problem validating the form please check!</div>
<div class="error text-align-center" id="err-timedout">The connection to the server timed out!</div>
<div class="error" id="err-state"></div>
</form>
<div id="ajaxsuccess">Successfully sent!!</div>
En dit het php gedeelte
Code (php)
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
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
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['name']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['name']) || !empty($naam_fout) || empty($_POST['email']) || !empty($email_fout) || empty($_POST['message']) || empty($_POST['subject']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['name']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['message']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['name']) . ' <' . $_POST['email'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['subject'] = str_replace('\n', '', $_POST['subject']); // Verwijder \n
$_POST['subject'] = str_replace('\r', '', $_POST['subject']); // Verwijder \r
$_POST['subject'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['subject'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['subject'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Het contactformulier is verzonden</h1>
<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>
<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
}
}
?>
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['name']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['name']) || !empty($naam_fout) || empty($_POST['email']) || !empty($email_fout) || empty($_POST['message']) || empty($_POST['subject']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['name']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['message']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['name']) . ' <' . $_POST['email'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['subject'] = str_replace('\n', '', $_POST['subject']); // Verwijder \n
$_POST['subject'] = str_replace('\r', '', $_POST['subject']); // Verwijder \r
$_POST['subject'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['subject'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['subject'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Het contactformulier is verzonden</h1>
<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>
<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
}
}
?>
Als ik met HTML bij de php zet werkt die wel, maar zodra mijn html doorverwijst naar een andere pagina werkt hij niet.
Zou iemand mij op weg kunnen helpen?
Met vriendelijke groet,
Gewijzigd op 20/03/2014 13:12:33 door TonnyBoy Verweij
Voor een PHP-sessie worden sessiecookies gebruikt. En cookies zijn HTTP-headers, die moet worden verzonden vóór HTML-output.
TonnyBoy Verweij op 20/03/2014 10:44:25:
Als ik met HTML bij de php zet werkt die wel, maar zodra mijn html doorverwijst naar een andere pagina werkt hij niet.
Ik heb geen idee wat je hier mee bedoelt.
Wat is "Met html bij de php"?
Waarnaar en hoe verwijs je?
Wat werkt er dan niet? Krijg je een foutmelding?
Als ik mijn HTML codering met de PHP codering samenvoeg tot 1 bestand dan werkt de code wel.
Maar als ik mijn HTML op index.html zet en de PHP op formulierverzenden.php
En ik richt mijn php file als target dan doet hij het niet.
en je button als volgt.
Je verwijst nu niet naar de php gedeelte maar naar formulier.php ( wat waarschijnlijk je form is ) maar dat moet dus leeg zijn als het in hetzelfde bestand staat en anders de naam van het bestand waar het in staat.
Reshad F op 20/03/2014 13:15:38:
je moet de formulierverzenden.php in je action hebben staan en niet in je target.
en je button als volgt.
Je verwijst nu niet naar de php gedeelte maar naar formulier.php ( wat waarschijnlijk je form is ) maar dat moet dus leeg zijn als het in hetzelfde bestand staat en anders de naam van het bestand waar het in staat.
en je button als volgt.
Je verwijst nu niet naar de php gedeelte maar naar formulier.php ( wat waarschijnlijk je form is ) maar dat moet dus leeg zijn als het in hetzelfde bestand staat en anders de naam van het bestand waar het in staat.
Met mijn HTML is niks verkeerd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form name="ajax-form" id="ajax-form" action="formulier.php" method="post">
<label for="name">Naam: *
<span class="error" id="err-name">Vul alsjeblieft uw naam in</span>
</label>
<input name="name" id="name" type="text" />
<label for="subject">Onderwerp: *
<span class="error" id="err-name">Vul alsjeblieft een onderwerp in</span>
</label>
<input name="subject" id="subject" type="text" />
<label for="email">E-Mail: *
<span class="error" id="err-email">Vul alsjeblieft uw e-mail in</span>
<span class="error" id="err-emailvld">e-mail is niet geldig</span>
</label>
<input name="email" id="email" type="text" />
<label for="message">Commentaar:</label>
<textarea name="message" id="message"></textarea>
<div id="button-con"><button class="send_message" id="send">Verzenden</button></div>
<div class="error text-align-center" id="err-form">There was a problem validating the form please check!</div>
<div class="error text-align-center" id="err-timedout">The connection to the server timed out!</div>
<div class="error" id="err-state"></div>
</form
<label for="name">Naam: *
<span class="error" id="err-name">Vul alsjeblieft uw naam in</span>
</label>
<input name="name" id="name" type="text" />
<label for="subject">Onderwerp: *
<span class="error" id="err-name">Vul alsjeblieft een onderwerp in</span>
</label>
<input name="subject" id="subject" type="text" />
<label for="email">E-Mail: *
<span class="error" id="err-email">Vul alsjeblieft uw e-mail in</span>
<span class="error" id="err-emailvld">e-mail is niet geldig</span>
</label>
<input name="email" id="email" type="text" />
<label for="message">Commentaar:</label>
<textarea name="message" id="message"></textarea>
<div id="button-con"><button class="send_message" id="send">Verzenden</button></div>
<div class="error text-align-center" id="err-form">There was a problem validating the form please check!</div>
<div class="error text-align-center" id="err-timedout">The connection to the server timed out!</div>
<div class="error" id="err-state"></div>
</form
Behalve dat het niet is ingesprongen.
TonnyBoy Verweij op 20/03/2014 13:18:51:
Misschien toch wel?
TonnyBoy Verweij op 20/03/2014 13:10:20:
Maar als ik mijn HTML op index.html zet en de PHP op formulierverzenden.php
En ik richt mijn php file als target dan doet hij het niet.
En ik richt mijn php file als target dan doet hij het niet.
In je html heb je het over formulier.php en niet over formulierverzenden.php
Obelix en Idefix op 20/03/2014 14:36:09:
Misschien toch wel?
In je html heb je het over formulier.php en niet over formulierverzenden.php
TonnyBoy Verweij op 20/03/2014 13:18:51:
Misschien toch wel?
TonnyBoy Verweij op 20/03/2014 13:10:20:
Maar als ik mijn HTML op index.html zet en de PHP op formulierverzenden.php
En ik richt mijn php file als target dan doet hij het niet.
En ik richt mijn php file als target dan doet hij het niet.
In je html heb je het over formulier.php en niet over formulierverzenden.php
Ik noemde het als voorbeeld formulierverzenden.php
Het oorspronkelijke bestand is gewoon formulier.php