[email protected] lukt niet met mail, maar [email protected] wel
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)
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
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
?>
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)
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
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;
}
}
?>
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)
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
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;
}
}
?>
// 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)
1
2
3
2
3
<?php
!preg_match("~(\s|^)([-a-z_][-a-z0-9._]*@[-a-z0-9_]+(?:\.[-a-z0-9_]+)+)\b~si", $inhoud)
?>
!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
Dat is alleen voor de passwords..
'^[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
Minimaal 5 dus.
Als ik helemaal niet controleer en alles toesta (behalve leegte),
Code (php)
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()?
EDIT: heeft het te maken met mail()?
Gewijzigd op 01/01/1970 01:00:00 door Patrick