Form controlle tel-nummer fout.
Die is opgebouwd ui Naam,E-mail,Onderwerp,Telefoon en tekst.
Bijna alles werkt zo als het moet werken.
Alleen het gedeelte van de telefoon werkt niet goed.
Dit hier onder is het stukje script waar het om gaat.
Voor de telefoon staat tussen regel 28 t/m 33.
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
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
<?
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
{
$aFouten = array();
//-----------------------------------------------------------------------------naam
if($_POST['naam'] == '')
{
$aFouten[] = 'Geen naam ingevuld !';
}
$field = $_POST["naam"];
if(!ctype_alpha($field)){
$aFouten[] = 'Geen geldig naam ingevuld !';
}
//-----------------------------------------------------------------------------email
if($_POST['e_mail'] == '')
{
$aFouten[] = 'Geen email ingevuld !';
}
if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $_POST['e_mail'])) {
$aFouten[] = 'Geen geldig email adres ingevuld !';
}
//-----------------------------------------------------------------------------onderwerp
if($_POST['onderwerp'] == '')
{
$aFouten[] = 'Geen onderwerp ingevuld !';
}
//-----------------------------------------------------------------------------telefoon
if(preg_match("/[0-9]{2}-[0-9]{8}/",$_POST['telefoon']) OR preg_match("/[0-9]{3}-[0-9]{7}/",$_POST['telefoon']) OR preg_match("/[0-9]{4}-[0-9]{6}/", $_POST['telefoon']))
{
$aFouten[] = 'Geen geldig nummer ingevuld !';
}
//-----------------------------------------------------------------------------tekst
if($_POST['text'] == '')
{
$aFouten[] = 'Geen tekst ingevuld !';
}
$string = $_POST["text"];
if(!preg_match("^[\.\,\?\!\€0-9a-zA-Z ]+$^",$string))
{
$aFouten[] = 'Geen geldig tekst ingevuld !';
}
//-----------------------------------------------------------------------------einde
if(count($aFouten) != 0)
?>
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
{
$aFouten = array();
//-----------------------------------------------------------------------------naam
if($_POST['naam'] == '')
{
$aFouten[] = 'Geen naam ingevuld !';
}
$field = $_POST["naam"];
if(!ctype_alpha($field)){
$aFouten[] = 'Geen geldig naam ingevuld !';
}
if($_POST['e_mail'] == '')
{
$aFouten[] = 'Geen email ingevuld !';
}
if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $_POST['e_mail'])) {
$aFouten[] = 'Geen geldig email adres ingevuld !';
}
//-----------------------------------------------------------------------------onderwerp
if($_POST['onderwerp'] == '')
{
$aFouten[] = 'Geen onderwerp ingevuld !';
}
//-----------------------------------------------------------------------------telefoon
if(preg_match("/[0-9]{2}-[0-9]{8}/",$_POST['telefoon']) OR preg_match("/[0-9]{3}-[0-9]{7}/",$_POST['telefoon']) OR preg_match("/[0-9]{4}-[0-9]{6}/", $_POST['telefoon']))
{
$aFouten[] = 'Geen geldig nummer ingevuld !';
}
//-----------------------------------------------------------------------------tekst
if($_POST['text'] == '')
{
$aFouten[] = 'Geen tekst ingevuld !';
}
$string = $_POST["text"];
if(!preg_match("^[\.\,\?\!\€0-9a-zA-Z ]+$^",$string))
{
$aFouten[] = 'Geen geldig tekst ingevuld !';
}
//-----------------------------------------------------------------------------einde
if(count($aFouten) != 0)
?>
Waar ga ik hier de fout in?
Gewijzigd op 04/05/2013 14:51:59 door Arthur Heijmen
Oke bedankt, dit werkt goed.
Wat als iemand +31 20 1234567 ingeeft? Dat is (internationaal) een geldig telefoonnummer (maar heeft 11 cijfers).
Beter is zoiets:
Hierdoor weet je zeker dat er geen verkeerde tekens inzitten, er ergens een streepje in zit (met sowieso 1 nummer ervoor) en je weet dat het totaal aantal nummers 10 is.
Wouter J op 04/05/2013 16:11:52:
Nee, geen eregi. Dat komt uit PHP4 en is deprecated in php5. Gebruik preg.
Beter is zoiets:
Hierdoor weet je zeker dat er geen verkeerde tekens inzitten, er ergens een streepje in zit (met sowieso 1 nummer ervoor) en je weet dat het totaal aantal nummers 10 is.
Beter is zoiets:
Hierdoor weet je zeker dat er geen verkeerde tekens inzitten, er ergens een streepje in zit (met sowieso 1 nummer ervoor) en je weet dat het totaal aantal nummers 10 is.
Juist dit geeft een fout melding
Code (php)
1
Warning: Wrong parameter count for preg_replace() in C:\werkmap\layout\root\files\contact.php on line 29
dat had ik met die andere niet.
is het dan toch niet beter om preg_match te gebruiken?
Code (php)
1
2
3
4
2
3
4
if(!preg_match('/^[0-9]{10}$/', $_POST['telefoon']))
{
$aFouten[] = 'Geen geldig nummer ingevuld !';
}
{
$aFouten[] = 'Geen geldig nummer ingevuld !';
}
dit werkt goed, zonder foutmelding.
Gewijzigd op 04/05/2013 17:15:29 door Arthur Heijmen