Hulp nodig met controleren van telefoonnummer
Ik ben geen programmeur maar moet nu toch een beroep doen op een stukje PHP. Het gaat om het verzenden van een telefoonnummer.
Het idee is dat wanneer men geen 10 cijfers intoetst het bericht niet verstuurd kan worden.
Tot nu toe heb ik m werkend maar wanneer men niets invult wordt deze ook verstuurd en dat moet natuurlijk niet.
Ik heb tot nu toe het volgende:
HTML file:
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
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Bel me terug</title>
<style type="text/css">
table {
background-repeat: no-repeat;
}
body,td,th {
font-family: Tahoma, Geneva, sans-serif;
font-size: 11px;
color: #FFF;
}
body {
margin-left: 10px;
margin-top: 10px;
}
</style>
</head>
<body>
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><br /><br /><br /><br /><br /><br /><br /><br /><center>
<form action="mailform.php" method="post">
<p>Uw telefoonnr.:<br />
<input type="text" name="tel"><br><br>
<input type="submit" value="Bel me terug">
</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</form>
</center>
</td>
</tr>
</table>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Bel me terug</title>
<style type="text/css">
table {
background-repeat: no-repeat;
}
body,td,th {
font-family: Tahoma, Geneva, sans-serif;
font-size: 11px;
color: #FFF;
}
body {
margin-left: 10px;
margin-top: 10px;
}
</style>
</head>
<body>
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><br /><br /><br /><br /><br /><br /><br /><br /><center>
<form action="mailform.php" method="post">
<p>Uw telefoonnr.:<br />
<input type="text" name="tel"><br><br>
<input type="submit" value="Bel me terug">
</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</form>
</center>
</td>
</tr>
</table>
</body>
</html>
En de PHP code ziet er uit als volgt:
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
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
<?php
// Geef hieronder het emailadres op waar de email heen gestuurd moet worden:
$_MC['ontvanger'] = '[email protected]';
// Geef hieronder het onderwerp van de email op:
$_MC['onderwerp'] = 'Belverzoek via de website';
// Geef hieronder het URL op waar de bezoeker naar toe doorgestuurd moet worden:
$_MC['bedankt'] = 'http://www.mijndomein.nl/bedankt.php';
///////////////////////////////////////////////////
// EINDE CONFIGURATIE. HIERONDER NIETS AANPASSEN //
///////////////////////////////////////////////////
//
$_MC['bericht'] = "Onderstaande belverzoek is binnengekomen via de BEL ME TERUG knop \r\n\r\n";
//
foreach($_POST as $veld_naam => $veld_invoer)
{
if ($veld_naam == 'mc_afzender') { $_MC['afzender'] = "$veld_invoer"; }
else {
$_MC['bericht'] .= "$veld_naam: $veld_invoer\r\n"; }
}
//
$emailadres_check = '/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])' .
'(([a-z0-9-])*([a-z0-9]))+' . '(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i';
$emailadres_check = preg_match ($emailadres_check, $_MC['afzender']);
/*--
if ($emailadres_check == '0') { echo 'Ongeldig emailadres opgegeven. Ga terug om dit probleem op te lossen.'; exit; }
//
$code = date("md");
if ($_POST[mc_getal] != "$code") { echo 'Ongeldig anti-spam code opgegeven. Ga terug om dit probleem op te lossen.'; exit; }
//
$headers = 'From: '.$_MC['afzender'].'' . "\r\n" .
'Reply-To: '.$_MC['afzender'].'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();--*/
//
mail($_MC['ontvanger'], $_MC['onderwerp'], $_MC['bericht'], $headers);
//
header('Location: '.$_MC['bedankt'].'');
?>
// Geef hieronder het emailadres op waar de email heen gestuurd moet worden:
$_MC['ontvanger'] = '[email protected]';
// Geef hieronder het onderwerp van de email op:
$_MC['onderwerp'] = 'Belverzoek via de website';
// Geef hieronder het URL op waar de bezoeker naar toe doorgestuurd moet worden:
$_MC['bedankt'] = 'http://www.mijndomein.nl/bedankt.php';
///////////////////////////////////////////////////
// EINDE CONFIGURATIE. HIERONDER NIETS AANPASSEN //
///////////////////////////////////////////////////
//
$_MC['bericht'] = "Onderstaande belverzoek is binnengekomen via de BEL ME TERUG knop \r\n\r\n";
//
foreach($_POST as $veld_naam => $veld_invoer)
{
if ($veld_naam == 'mc_afzender') { $_MC['afzender'] = "$veld_invoer"; }
else {
$_MC['bericht'] .= "$veld_naam: $veld_invoer\r\n"; }
}
//
$emailadres_check = '/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])' .
'(([a-z0-9-])*([a-z0-9]))+' . '(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i';
$emailadres_check = preg_match ($emailadres_check, $_MC['afzender']);
/*--
if ($emailadres_check == '0') { echo 'Ongeldig emailadres opgegeven. Ga terug om dit probleem op te lossen.'; exit; }
//
$code = date("md");
if ($_POST[mc_getal] != "$code") { echo 'Ongeldig anti-spam code opgegeven. Ga terug om dit probleem op te lossen.'; exit; }
//
$headers = 'From: '.$_MC['afzender'].'' . "\r\n" .
'Reply-To: '.$_MC['afzender'].'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();--*/
//
mail($_MC['ontvanger'], $_MC['onderwerp'], $_MC['bericht'], $headers);
//
header('Location: '.$_MC['bedankt'].'');
?>
Niet het mooiste script maar het werkt. Kan iemand me helpen?
Met vriendelijke groet,
Marc
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 12/08/2014 22:16:21 door - Ariën -
Houd er rekening mee dat mensen vele varianten kunnen invoeren:
012-3456789
012 34 56 78 9
+31 12 345 6789
(31) 123456789
En nog vele combinaties.
Beste (?) wat je kunt doen is om elk teken apart te controleren. Als het een cijfer is, verhoog je een tellertje. Als aan het eind van de controle het tellertje op 10 staat, heb je tien getallen. Of je daarmee een geldig telefoonnummer hebt is natuurlijk niet te zeggen.
10 cijfers achter elkaar vind ik goed genoeg. En of dat nummer dan geldig is maakt me niet uit. Als je maar kunt zien dat er iets is ingevoerd.
Is bovenstaand script (inclusief het php-stukje) mailform.php?
Je checkt niet of er gepost is.
Je emailheaders zijn fout.
http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders
Ja dat is mailform.php
Zo lang we niet kunnen zien WAT je doet kunnen we je ook niet vertellen wat er mis gaat.
Marc vdL op 12/08/2014 14:50:08:
Niet het mooiste script maar het werkt.
Het script hoeft niet 'mooi' te zien, maar als de enige vereiste is dat het werkt, lijkt me dat een verkeerde insteek.
- Aar -:
Ik heb de topictitel aangepast va: 'Hulp met scriptje nodig' naar 'Hulp nodig met controleren van telefoonnummer'.
Dit omdat de topic iets te generiek was, en niet aangaf wat de vraag/probleem-stelling van het topic was.
Dit omdat de topic iets te generiek was, en niet aangaf wat de vraag/probleem-stelling van het topic was.
Gewijzigd op 12/08/2014 22:18:09 door - Ariën -
http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_input_required
Let wel op, dit is alleen in de browser. Je zult dus zoals bovenstaand ook in je PHP script op de server nog moeten controleren.
Dan zou je voor een Nederlands telefoonnummer 10 of 12 cijfers moeten overhouden (12 alleen voor data-nummers).
Daarna weet je dat het met een 0 begint
http://www.pfz.nl/wiki/invoer-validatie/#regular-expressions-is-het-een-nederlands-telefoonnummer
(06) 12 34 56 78 = 0031612345678
Quote:
Vanwege het uitgeput raken van de 06 reeks worden sinds eind 2013 nummers voor mobiele datanummers (data-abonnementen voor tablet etc, maar ook liften, meetapparatuur etc) geput uit de reeks 097. Dit zijn 12 cijferige nummers. Dus 2 posities langer dan de gebruikelijke nummers voor vaste of mobiele telefonie.
Aha! +1