Geen geldig emailadres
Captcha doet het overigens en het begon ook pas nadat ik de captcha had ingevoegd
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
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
<?
//Opencaptcha
if(file_get_contents("http://www.opencaptcha.com/validate.php?ans=".$_POST['code']."&img=".$_POST['img'])=='pass')
{
//Hier hoeft niet perse iets in
}
else {
//terugverwijzing als de code fout is ingevoerd
header("LOCATION: ".$_SERVER['HTTP_REFERER']."?opencaptcha=failed");
}
//Database verbinding
$con = mysql_connect("localhost","root","root");
if (!$con)
{
echo "Verbinding is nu niet beschikbaar";
}
mysql_select_db("aanmeldig", $con);
//------------------
//Variablen defineren
$antiflood_time = time() + 120;
$cookie = explode(",", $_COOKIE['antiflood']);
$sql="INSERT INTO gegevens (voornaam, achternaam, adres, postcode, woonplaats, email)
VALUES
('$_POST[voornaam]','$_POST[achternaam]','$_POST[adres]','$_POST[postcode]','$_POST[woonplaats]','$_POST[mailadres]')";
//-----------------
//Antiflood
if ($cookie[1] >= 5)
{
echo "<h1>Antiflood activated</h1>";
echo "<p><b>Probeer het later opnieuw..</b></p>";
exit();
}
elseif ($cookie[0] == $_SERVER['PHP_SELF'])
{
$cookie[1]++;
setcookie("antiflood", $_SERVER['PHP_SELF'] . "," . $cookie[1], $antiflood_time);
}
else
{
setcookie("antiflood", "");
setcookie("antiflood", $_SERVER['PHP_SELF'] . ",1", $antiflood_time);
}
//----------------
//Email checker
function checkEmail($email) {
if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])
↪*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",
$email)){
list($username,$domain)=split('@',$email);
if(!checkdnsrr($domain,'MX')) {
return false;
}
return true;
}
return false;
}
if (isset($_REQUEST['mailadres']))
{//als mailadres is ingevuld, gaat ie door
//check of het emailadres geldig is
$mailcheck = checkEmail($_REQUEST['mailadres']);
if ($mailcheck==FALSE)
{
echo "Geen geldig mailadres ingevuld!";
}
//SQL query uitvoeren
if (!mysql_query($sql,$con))
{
echo "Verbinding met database mislukt";
}
else {echo "U bent succesvol aangemeld";
}
}
?>
//Opencaptcha
if(file_get_contents("http://www.opencaptcha.com/validate.php?ans=".$_POST['code']."&img=".$_POST['img'])=='pass')
{
//Hier hoeft niet perse iets in
}
else {
//terugverwijzing als de code fout is ingevoerd
header("LOCATION: ".$_SERVER['HTTP_REFERER']."?opencaptcha=failed");
}
//Database verbinding
$con = mysql_connect("localhost","root","root");
if (!$con)
{
echo "Verbinding is nu niet beschikbaar";
}
mysql_select_db("aanmeldig", $con);
//------------------
//Variablen defineren
$antiflood_time = time() + 120;
$cookie = explode(",", $_COOKIE['antiflood']);
$sql="INSERT INTO gegevens (voornaam, achternaam, adres, postcode, woonplaats, email)
VALUES
('$_POST[voornaam]','$_POST[achternaam]','$_POST[adres]','$_POST[postcode]','$_POST[woonplaats]','$_POST[mailadres]')";
//-----------------
//Antiflood
if ($cookie[1] >= 5)
{
echo "<h1>Antiflood activated</h1>";
echo "<p><b>Probeer het later opnieuw..</b></p>";
exit();
}
elseif ($cookie[0] == $_SERVER['PHP_SELF'])
{
$cookie[1]++;
setcookie("antiflood", $_SERVER['PHP_SELF'] . "," . $cookie[1], $antiflood_time);
}
else
{
setcookie("antiflood", "");
setcookie("antiflood", $_SERVER['PHP_SELF'] . ",1", $antiflood_time);
}
//----------------
//Email checker
function checkEmail($email) {
if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])
↪*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",
$email)){
list($username,$domain)=split('@',$email);
if(!checkdnsrr($domain,'MX')) {
return false;
}
return true;
}
return false;
}
if (isset($_REQUEST['mailadres']))
{//als mailadres is ingevuld, gaat ie door
//check of het emailadres geldig is
$mailcheck = checkEmail($_REQUEST['mailadres']);
if ($mailcheck==FALSE)
{
echo "Geen geldig mailadres ingevuld!";
}
//SQL query uitvoeren
if (!mysql_query($sql,$con))
{
echo "Verbinding met database mislukt";
}
else {echo "U bent succesvol aangemeld";
}
}
?>
Eerst vul je de $sql in, pas later valideer je het e-mailadres. Dus sowieso doe je niet veel met je validatie.
Dan definieer je een functie tussen je code die uitgevoerd wordt. Definieer je functies helemaal onderaan of bovenaan je php file.
Je beveiligt je post variabelen niet; je zet je server dus wagenwijd open voor hackers.
Verder is het probleem dat je meldt een deelprobleem dat je apart kan oplossen.
Haal eens die functie apart (aparte test.php) en controleer of ze werkt.
Ja, sorry hoor, maar er is nogal veel werk aan de winkel; een beetje veel om op te noemen.
Ben het wel met je eens, vind het ook persoonlijk rommelig overkomen.
Dit soort dingen kan je beter netjes sorteren zodat het script niet onnodig veel handelingen heeft.
- SanThe - op 26/01/2012 16:28:47:
Heel erg bedankt, met dit werkt ie perfect :)
Ik mag hopen voor je dat die 'anti flood' niet de hele website blokkeert wanneer je vijf pagina's opvraagt, want dan komt niemand langer dan een minuut op je website.
Roel van de Water op 27/01/2012 10:16:23:
Ik mag hopen voor je dat die 'anti flood' niet de hele website blokkeert wanneer je vijf pagina's opvraagt, want dan komt niemand langer dan een minuut op je website.
Nee, dat geld alleen voor deze pagina!