Forum » Server-Side scripting » Fout validatie email
Berichten: 552
avatar
Offline Stuur privebericht
Beste,
voor een project van mij wil ik graag OOP toevoegen. Nou heb ik een functie voor het valideren van een email, in die functie staat FILTER_VALIDATE_EMAIL. Ik wil dat als de email niet klopt dat hij false weer geeft. Met een if heb ik de functie opgeroepen.

Echter het probleem is dat hij het niet doet. Als ik de email goed invul geeft ie toch een melding aan van dat ie niet klopt. Weet misschien iemand hoe ik dit kan oplossen?

Dit is de code:
Code | Selecteer Alles
minimaliseren
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
<?php
//Deze source is gebouwd door Frank sijbom.

$mysqli = new mysqli("192.168.0.100","unitedwa_systeem","*****","unitedwa_systeem");

if(
mysqli_connect_errno()) {
    
printf("Connect failed: %sn"mysqli_connect_error());
    exit;
}

if(isset(
$_POST['submit'])) {

    
$fout = array();
    
    
$naam $mysqli->real_escape_string($_POST['naam']);
    
$email $mysqli->real_escape_string($_POST['email']);
    
$woonplaats $mysqli->real_escape_string($_POST['woonplaats']);
    
$mobiel $mysqli->real_escape_string($_POST['mobiel']);
    
$opmerking $mysqli->real_escape_string($_POST['opmerking']);
    
    class 
Keuren {
        public function 
EmailKeuren($email) {
            if(
filter_var($email,FILTER_VALIDATE_EMAIL)) {
                return 
true;
            } else {
                return 
false;
            }
        }
    }
    
    
$keuren = new Keuren();
    
$keuren->EmailKeuren($email);
    
    if(empty(
$naam)) {
        
$fout[] = 'U heeft uw naam niet ingevult!';
    }
    
    if(empty(
$email)) {
        
$fout[] = 'U heeft uw email adres niet ingevult!';
    }
    
    if(empty(
$woonplaats)) {
        
$fout[] = 'U heeft uw woonplaats niet ingevult!';
    }
    
    if(empty(
$mobiel)) {
        
$fout[] = 'U heeft uw mobiele nummer niet opgegeven!';
    }
    
    if(empty(
$opmerking)) {
        
$fout[] = 'U heeft geen opmerking ingevult!';
    }
    
    if(
$keuren->EmailKeuren != true) {
        
$fout[] = 'Uw email adres klopt niet!';
    }
    
    
$fouten count($fout);
    
    if(
$fouten 0) {
        echo 
'<div style="font-weight: bold;">U heeft iets niet goed ingevult!</div>';
        for(
$i 0$i $fouten$i++) {
            echo 
'<div style="font-style: italic;">- '$fout[$i] .'</div>';
        }
        echo 
'';
    } else {
        echo 
'U heeft alles goed ingevult, er is een email naar de developer gestuurd!';
    }
}
?>
Hier kunt U uw project opsturen, dit word dan bekeken door een van de developers. U krijgt zo spoedig mogelijk bericht van de developer die U gaat helpen.

<form method="post" action="">
    <div style="width: 240px; float: left;">* Contact naam: <input type="text" size="15" name="naam" /></div>
    <div style="width: 240px; float: left">* Email: <input type="text" size="20" name="email" /></div>
    <div style="width: 240px; float: left">* Woonplaats.: <input type="text" size="15" name="woonplaats" /></div>
    <div style="width: 240px; float: left">* Contact Mob.: <input type="text" size="15" name="mobiel" /></div>
    <div style="width: 480px; float: left">* Eventuele opmerking:<textarea name="opmerking" cols="60%" rows="8%">Hier uw opmerking</textarea></div>
    <div style="width: 480px; float: left;"><input type="submit" name="submit" value="Stuur op!" />* = vereist!</div>
    </form>
<?php
$mysqli
->close();
?>


Met vriendelijke groet,
Frank sijbom
Laatst gewijzigd door FrankY op 2011-01-24 20:42:04
24-01-2011 20:41
Dit topic is 149 keer bekeken door 29 verschillende leden
Reacties op: "Fout validatie email"
1
nyan nyan nyan nyan
Berichten: 2076
avatar
Offline Stuur privébericht
Dit is niet objectgeorienteerd, trouwens; dat kan beter en compacter, desgewenst nog de HTML compleet gescheiden van PHP
Je kan het beter opvragen met direct de filter_var in een if-je. En nog een tip: Je kan direct dit doen:
return filter_var($email, FILTER_VALIDATE_EMAIL); aangezien deze functie al true of false retourneert is dit overbodig.

In je staat dit: ($keuren->EmailKeuren). Je moet er haakjes omheen doen, en een variabele meegeven, wat je op lijn 32 doet is namelijk nutteloos, er wordt daar true geretourneerd maar het wordt nergens in opgeslagen. Dus van lijn 54 kan je het beste dit maken:
if(!$keuren->EmailKeuren($email))
Langer:
if not $keuren->EmailKeuren > true, dan foutmelding weergeven.

En hoe ik het zou doen:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
<?php
if(!filter_var($emailFILTER_VALIDATE_EMAIL))
{
echo 
'Meh, niet goed!';
}
?>


Succes
24-01-2011 20:54
Informatica Student
Berichten: 1406
avatar
Offline Stuur privébericht
Naast dat mijn eigen voorkeur uit gaat naar een regex... is zoals gezegd is dit niet OOP.

Sterker nog, het is een mislukte poging. Je maakt namelijk geen klasse aan voor maar één methode.
24-01-2011 21:03
Berichten: 552
avatar
Offline Stuur privébericht
Thx jannick hij klopt, ik ga niet met if(!filter_var()) { } doen omdat ik stapje voor stapje meer wil leren. Als het het nog niet is jammer. Ik probeer zo veel mogelijk te leren en zonder fouten kom ik erniet.

Ik heb precies gedaan wat je zei dus voor de mensen die oplossing willen weten staat hier boven.

Met vriendelijk groet,
Frank sijbom

ps. Moeten nog meer methodes bij
24-01-2011 21:03
Berichten: 2123
avatar
Offline Stuur privébericht
@Jannick:

Quote

return filter_var($email, FILTER_VALIDATE_EMAIL); aangezien deze functie al true of false retourneert is dit overbodig.


Dit is niet helemaal waar, zie filter_var.

@BrokenTrack:

Quote

Naast dat mijn eigen voorkeur uit gaat naar een regex... is zoals gezegd is dit niet OOP.

Sterker nog, het is een mislukte poging. Je maakt namelijk geen klasse aan voor maar één methode.


Een reguliere expressie is waarschijnlijk langzamer. Reguliere expressies zijn langzaam van zichzelf, en een functionaliteit die al in PHP ingebouwd is zou sneller moeten zijn.

Daarnaast is het niet waar dat een class met slechts één method niet mogelijk is. Er zijn best situaties denkbaar waarin een class maar één method heeft, maar in dit geval is het inderdaad niet correct.
24-01-2011 21:20
Reageer op: "Fout validatie email"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden