Contact pagina pakt geen lage streepje in het email adres
De titel spreekt wel voor zich hoop ik.
in dit script staan de tekens die toegestaan zijn voor een emailadres maar toch pakt hij het lage streepje niet terwijl hij er toch tussen staat.
Hopelijk kan iemand mij ff helpen
alvast bedankt.
Quote:
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
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
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
<?
// geef e-mail adres op van ontvanger
$mail_ontv = "[email protected]";
// is niet 100% !!!
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
// als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is
if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
echo "U bent uw naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn ";
echo "dat u een verkeerd e-mail adres hebt ingevuld.<p>";
echo "mocht het dan niet lukken stuur een e-mail naar [email protected]";
}
// form + tabel
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<form method=\"POST\" ACTION=\"" . $_SERVER['PHP_SELF'] . "\">";
// naam
echo "<tr><td>Naam:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
// mail
echo "<tr><td>E-mail adres:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
// mail
echo "<tr><td>Onderwerp:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
// mail
echo "<tr><td>Bericht:</td></tr>";
echo "<tr><td><TEXTAREA name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>";
// space
echo "<tr><td> </td></tr>";
// button
echo "<tr><td> </td></tr>";
echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>";
// sluit form + tabel
echo "</form>";
echo "</table>";
}
// versturen naar
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Ingevulde contact formulier\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= $_SERVER['SCRIPT_URI'] . "\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= $_POST['msggs'] . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorials/10/340/
// ------
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
$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['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
echo "<h1>Je e-mail is verstuurd</h1>";
echo "<p>Bedankt voor het versturen van een e-mail. Je zult snel een antwoord ";
echo "krijgen indien dit nodig is.</p>";
echo "<p>We nemen alles serieus en zullen vertrouwelijk omgaan met de informatie ";
echo "die we binnen krijgen. Je e-mail adres zal nooit aan derden worden verstrekt.</p>";
}
?>
// geef e-mail adres op van ontvanger
$mail_ontv = "[email protected]";
// is niet 100% !!!
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
// als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is
if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
echo "U bent uw naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn ";
echo "dat u een verkeerd e-mail adres hebt ingevuld.<p>";
echo "mocht het dan niet lukken stuur een e-mail naar [email protected]";
}
// form + tabel
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<form method=\"POST\" ACTION=\"" . $_SERVER['PHP_SELF'] . "\">";
// naam
echo "<tr><td>Naam:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
echo "<tr><td>E-mail adres:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
echo "<tr><td>Onderwerp:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
echo "<tr><td>Bericht:</td></tr>";
echo "<tr><td><TEXTAREA name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>";
// space
echo "<tr><td> </td></tr>";
// button
echo "<tr><td> </td></tr>";
echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>";
// sluit form + tabel
echo "</form>";
echo "</table>";
}
// versturen naar
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Ingevulde contact formulier\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= $_SERVER['SCRIPT_URI'] . "\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= $_POST['msggs'] . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorials/10/340/
// ------
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
$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['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
echo "<h1>Je e-mail is verstuurd</h1>";
echo "<p>Bedankt voor het versturen van een e-mail. Je zult snel een antwoord ";
echo "krijgen indien dit nodig is.</p>";
echo "<p>We nemen alles serieus en zullen vertrouwelijk omgaan met de informatie ";
echo "die we binnen krijgen. Je e-mail adres zal nooit aan derden worden verstrekt.</p>";
}
?>
zet eens
error_reporting(E_ALL) boven je document
U bent uw naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn dat u een verkeerd e-mail adres hebt ingevuld.
mocht het dan niet lukken stuur een e-mail naar [email protected]
Gewijzigd op 02/11/2010 22:33:07 door Nawien Nawien
Het lijkt erop dat je e-mail adres niet door je checkmail() functie komt. Daar zul je dus eens moeten controleren waarom dat niet gebeurt. Wellicht iets met de regex?
Blanche - op 02/11/2010 22:38:02:
Het lijkt erop dat je e-mail adres niet door je checkmail() functie komt. Daar zul je dus eens moeten controleren waarom dat niet gebeurt. Wellicht iets met de regex?
ja maar het rare is dat als je geen lage streepje in je email adres zet dat hij het dan wel gewoon verstuurd.
Ik heb je scriptje net getest, maar het werkt hier gewoon prima. Welk e-mail adres vul jij in dat niet werkt?
ps. Of je moet je checkmail() functie aanpassen uiteraard.
Gewijzigd op 02/11/2010 22:52:04 door Joren de Wit
zou je mij mischien een voorbeel kunnen geven van hoe ik dat zou kunnen doen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && preg_match('=^[0-9a-z]([0-9a-z_])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$=i',$mail))
$valid = 1;
return $valid;
}
?>
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && preg_match('=^[0-9a-z]([0-9a-z_])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$=i',$mail))
$valid = 1;
return $valid;
}
?>
Ik heb enkel de reguliere expressie en de verouderde eregi() functie gewijzigd. Kijk wat er veranderd is en probeer het te snappen...
Blanche - op 02/11/2010 22:58:27:
Vervang je checkmail() functie eens door dit:
Ik heb enkel de reguliere expressie en de verouderde eregi() functie gewijzigd. Kijk wat er veranderd is en probeer het te snappen...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && preg_match('=^[0-9a-z]([0-9a-z_])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$=i',$mail))
$valid = 1;
return $valid;
}
?>
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && preg_match('=^[0-9a-z]([0-9a-z_])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$=i',$mail))
$valid = 1;
return $valid;
}
?>
Ik heb enkel de reguliere expressie en de verouderde eregi() functie gewijzigd. Kijk wat er veranderd is en probeer het te snappen...
Yes hij doet het hartelijk bedankt :D
En niet de controle via $_POST['submit']. Verder gebruik je isset() om te controleren of variabelen bestaan en niet enkel een !. Tenslotte kun je controleren of variabelen gevuld zijn door deze controle uit te voeren:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && preg_match('=^[0-9a-z]([0-9a-z_])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$=i',$mail))
$valid = 1;
return $valid;
}
?>
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && preg_match('=^[0-9a-z]([0-9a-z_])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$=i',$mail))
$valid = 1;
return $valid;
}
?>
Bij het email adres kan ik nu wel een lage streepje plaatsen maar als ik een . voor de @ invul of een gewoon - dan doet hij het niet hoe zou ik die erbij kunnen voegen?
Een punt of een streepje mag niet voor een @ dacht ik?
Verder moet je natuurlijk wel opletten dat een email adres ook echt geldig is. Zie de opmerking van Chris...
Chris Horeweg op 04/11/2010 16:26:50:
Een punt of een streepje mag niet voor een @ dacht ik?
maar bij een gmail account mag het wel een . voor de @ en bij hotmail mag het ook gewoon een . en een gewoon streepje
Gewijzigd op 04/11/2010 16:32:14 door Nawien Nawien
Chris Horeweg op 04/11/2010 16:26:50:
Een punt of een streepje mag niet voor een @ dacht ik?
Ja, dat is toegestaan. (Streepje is dan wel een underscore).
maar hoe zou ik dat dan erbij kunnen zetten ik heb al wat dingen geprobeert maar het wilt niet echt lukken
Prima, dan moet je dus de reguliere expressie even aanpassen. Daar mag je zelf eerst wel even naar kijken. Vergelijk vooral de regex uit jouw eerste scriptje met de aangepaste reguliere expressie die ik je gaf.
@ Blanche ik zie dat jij het in een lus ofso hebt gestopt ik weet niet precies hoe je het noemt maar het is deze teken $=i en ik gebruik erregi en jij preg match maar k heb egt geen idee wat het inhoud.
$ - einde van de string
= - delimiter van reguliere expressie
i - pattern modifier om de regex case insensitive te maken
Tip: de punt heeft een speciale betekenis in een regex. Als je een fysieke punt wilt matchen, zul je hem moeten escapen met een backslash: \.