FILTER_VALIDATE_EMAIL op meerde email adressen
Ik had een vraagje. Ik heb een formulier met 3 invulvelden. Minstens 1 van de invulvelden is verplicht om in te vullen, de rest niet. De invulvelden zijn ervoor om e-mailadressen in toe voeren. Hierdoor gebruik ik FILTER_VALIDATE_EMAIL om er zeker van de te zijn dat de ingevulde gegevens wel degelijk e-mailadressen zijn.
Het probleem is dus dat als bijv. 1 van de 3 of 2 van de 3 velden alleen zijn ingevuld, de FILTER_VALIDATE_FUNCTION de lege velden als een invalid e-mailadressen ziet. Hoe zorg ik ervoor dat de FILTER_VALIDATE_EMAIL functie lege velden negeert?
Hier is mijn code:
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
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
<?php
// includes
include ("config.php");
// input verification
$inv1 = strip_tags($_POST['inv1']);
$inv2 = strip_tags($_POST['inv2']);
$inv3 = strip_tags($_POST['inv3']);
$doubleCheck = mysql_query("SELECT email FROM beta_users WHERE email = '". $inv1 ."' OR email = '". $inv2 ."' OR email = '". $inv3 ."'");
if (empty($_POST['inv1']) && empty($_POST['inv2']) && empty($_POST['inv3'])) {
echo 'Fill in at least one email adress to invite';
//header('Location: http://www.google.com');
}
// check if the provided email adress is a real and valid email adress
elseif (!filter_var($inv1, FILTER_VALIDATE_EMAIL)) {
echo 'You have provided an invalid email adress';
}
elseif (!filter_var($inv2, FILTER_VALIDATE_EMAIL)) {
echo 'You have provided an invalid email adress';
}
elseif (!filter_var($inv3, FILTER_VALIDATE_EMAIL)) {
echo 'You have provided an invalid email adress';
}
// check if the invited user is already registered
elseif (mysql_num_rows($doubleCheck) > 0) {
echo 'One or more of the email adresses you have provided is/are already registered';
//header('Location: http://www.google.com');
}
?>
// includes
include ("config.php");
// input verification
$inv1 = strip_tags($_POST['inv1']);
$inv2 = strip_tags($_POST['inv2']);
$inv3 = strip_tags($_POST['inv3']);
$doubleCheck = mysql_query("SELECT email FROM beta_users WHERE email = '". $inv1 ."' OR email = '". $inv2 ."' OR email = '". $inv3 ."'");
if (empty($_POST['inv1']) && empty($_POST['inv2']) && empty($_POST['inv3'])) {
echo 'Fill in at least one email adress to invite';
//header('Location: http://www.google.com');
}
// check if the provided email adress is a real and valid email adress
elseif (!filter_var($inv1, FILTER_VALIDATE_EMAIL)) {
echo 'You have provided an invalid email adress';
}
elseif (!filter_var($inv2, FILTER_VALIDATE_EMAIL)) {
echo 'You have provided an invalid email adress';
}
elseif (!filter_var($inv3, FILTER_VALIDATE_EMAIL)) {
echo 'You have provided an invalid email adress';
}
// check if the invited user is already registered
elseif (mysql_num_rows($doubleCheck) > 0) {
echo 'One or more of the email adresses you have provided is/are already registered';
//header('Location: http://www.google.com');
}
?>
Mvg,
Piet
Toevoeging op 23/05/2013 17:24:36:
Wel vreemd overigens dat je elke keer een check uitvoert NADAT je iets al gebruikt hebt.... Niet erg handig. Als er nu een hacker bezig is dan is je database al leeg voor je uberhaupt op sql injectie controleert.
@Piet Offtopic: 'Email Adress'... het moet zijn met dubbel dd :) 'Address'
Dankjewel Erwin en Marvin erg bedankt voor de waarschuwing, maar gelukkig is het gewoon een persoonlijk opdrachtje dan maakt het niet zoveel uit :D.
Piet Jansen op 23/05/2013 17:40:12:
maar gelukkig is het gewoon een persoonlijk opdrachtje dan maakt het niet zoveel uit :D.
Dat moet je helemaal zelf weten, maar bedenk je wel dat als je iets verkeerd aanleert, je het altijd verkeerd gaat doen.