[email protected] lukt niet met mail, maar [email protected] wel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick

Patrick

08/04/2008 22:04:00
Quote Anchor link
Tijdens registreren onstaat het probleem, dat adressen beginnend met bijv. info@, test@ niet geaccepteerd worden.
Op het moment dat er meer dan 4 letters voor @ staan, gaat het goed.
[email protected] en [email protected] bijv. gaan goed.

Ik krijg de melding "Het verzenden van de bevestigingsmail is mislukt" na deze check,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        // initialisatie
        $fout_bericht        = '';
        $member_email        = $_POST['email'];
        $member_wachtwoord    =  $_POST['wachtwoord'];
        $member_code        = create_regcode(); // random 32-bits registratiecode genereren

        // een reeks controles uitvoeren:
        // eerst controleren of het e-mailadres al bestaat in de database
        // (dubbele vermeldingen mogen niet voorkomen)

        $aQuery    = "SELECT * FROM leden WHERE email='" . $member_email . "'";
        $result    = safe_query($aQuery, $db_connect);
            
        if (mysql_num_rows($result) > 0) {
            // e-mailadres bestaat al in de database, foutmelding tonen
            $fout_bericht .= "Dit e-mailadres (<b>" . $member_email . "</b>) bestaat al!<br />";
            }

        elseif(!check_field($member_email, T_EMAIL)) {
            $fout_bericht .= "U hebt geen geldig e-mailadres opgegeven";    
            }

        elseif(!check_field($member_wachtwoord, T_PASSWORD)) {
            $fout_bericht .= "U hebt geen geldig wachtwoord opgegeven (minimaal 6, maximaal 10 tekens) <b />";
            }

        elseif(!send_confirmation($member_email, $member_code)) {
            // e-mailadres OK, query opbouwen en mailtje met bevestigingscode verzenden
            $fout_bericht .="Het verzenden van de bevestigingsmail is mislukt";
            }

               // knip
               // knip

?>

Het volgende verwijderen, elseif(!check_field($member_email, T_EMAIL))
geeft dezelfde foutmelding

Dit is de funktie waar het op blijft hangen,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
    function send_confirmation($email, $code='') {
        global $url_pad;
        // functie om een bevestigingsmailtje te sturen na aanmelding/registratie
        if(!empty($email)) {
            $pagina = "http://" . $_SERVER['HTTP_HOST'];
            $pagina .= "" . $url_pad . "login_confirm.php?user="
                        . $email . "&code=" . $code;
            $onderwerp = "bevestig uw registratie\r\n";
            $ontvanger = $email;
            
            $bericht = "Bedankt voor uw aanmelding!\n\n";
            $bericht .= "Uw account is geregistreerd met het volgende e-mailadres: $email\n\n";    
            $bericht .= "Activeer uw account via deze pagina: $pagina\n\n";
            $bericht .= "Met vriendelijke groet\nDe webmaster";
            }

        else {
            return false;
            }

        // Het e-mailbericht verzenden
        if(!mail($ontvanger, $onderwerp, $bericht)) {
            return false;
            }

        else {
            return true;
            }
        }

?>


De function check_field is,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
    // input van formulier checken
    function check_field ($inhoud, $type) {
        trim($inhoud); // eventuele spaties verwijderen
        switch ($type) {
            // controleer een e-mailadres met reguliere expressie
            case T_EMAIL:
                if (empty($inhoud) || filter_var($inhoud, FILTER_VALIDATE_EMAIL) === FALSE) {
                    return false;
                    }

                else {
                    return true;
                    }

                break;
            // controleer een opgegeven wachtwoord. Eis: minimaal 6, maximaal 10 tekens, moet beginnen met een letter.
            case T_PASSWORD:
                if(empty($inhoud) || !eregi( '^[a-zA-Z].{5,11}$', $inhoud)) {
                    return false;
                    }

                else {
                    return true;
                    }

                break;
                default:

                    return false;
            }
        }

?>


Deze
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
!preg_match("~(\s|^)([-a-z_][-a-z0-9._]*@[-a-z0-9_]+(?:\.[-a-z0-9_]+)+)\b~si", $inhoud)
?>

i.p.v. filter_var($inhoud, FILTER_VALIDATE_EMAIL) === FALSE) geeft hetzelfde probleem.

Ik las hier volgens mij een soort gelijk probleem,
http://www.phphulp.nl/forum/showtopic.php?cat=1&id=43747&lasttopic=1

Wat gaat er nu precies fout?
Gewijzigd op 01/01/1970 01:00:00 door Patrick
 
PHP hulp

PHP hulp

12/01/2025 03:38:16
 
Mike van Dongen

Mike van Dongen

08/04/2008 22:12:00
Quote Anchor link
Edit, sorry, las het verkeerd.
Dat is alleen voor de passwords..

in check_field regel 17 heb je
'^[a-zA-Z].{5,11}$'
die 5,11 staat voor het aantal tekens waarmee het mailadres mee mag beginnen.
Gewijzigd op 01/01/1970 01:00:00 door Mike van Dongen
 
Frank -

Frank -

08/04/2008 22:14:00
Quote Anchor link
Minimaal 5 dus.
 
Jan Koehoorn

Jan Koehoorn

08/04/2008 22:17:00
 
Patrick

Patrick

08/04/2008 23:06:00
Quote Anchor link
Het probleem blijft bestaan met de e-mail-regex tip

Als ik helemaal niet controleer en alles toesta (behalve leegte),
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
            case T_EMAIL:
                if (empty($inhoud)) {
                    return false;
                    }

                else {
                    return true;
                    }

                break;
?>

dan wordt [email protected] tegengehouden terwijl [email protected] wel toegelaten wordt.

Begrijpen doe ik het niet meer.

Edit:

EDIT: heeft het te maken met mail()?
Gewijzigd op 01/01/1970 01:00:00 door Patrick
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.