preg match probleem
Aller eerst ik ben nieuw op dit forum en kijk er naar uit om veel te leren door jullie en van deze website.
Dan nu maar het probleem waar ik tegen aan loop. Ik heb een formulier en ik wil alle invulvelden controleren op juistheid. Dit wil ik doen met de functie preg match
Quote:
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
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
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
<?php
function checkvoornaam($voornaam)
{
return (preg_match ("^[A-Za-z. -]+$^", $voornaam));
}
$con = mysql_connect("localhost","","");
$dbselect = mysql_select_db("hands4art", $con);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
if (empty($_POST))
{
echo "U moet eerst een aanvraag doen via onze Offerte Formulier";
exit();
}
elseif(empty($_POST['voornaam']))
{
echo "U heeft uw voornaam niet ingevult.";
}
elseif(empty($_POST['achternaam']))
{
echo "U heeft uw achternaam niet ingevult.";
}
elseif(empty($_POST['straat']))
{
echo "U heeft uw straatnaam en nummer niet ingevult.";
}
elseif(empty($_POST['postcode']))
{
echo "Uw postcode is niet ingevult";
}
elseif(empty($_POST['plaats']))
{
echo "U heeft uw postcode niet ingevult";
}
elseif(empty($_POST['email']))
{
echo "U heeft uw email niet ingevult";
}
elseif(empty($_POST['offerte']))
{
echo " U heeft geen omschrijving ingevult";
exit();
}
elseif(!checkvoornaam($voornaam))
{
echo "Voornaam mag alleen bestaan uit letters";
exit();
}
else
{
$query= "INSERT INTO offerte ( voornaam, achternaam, straatnaam, postcode, plaats, email, onderwerp, beschrijving)";
$query .= "VALUES ('";
$query .= $_POST["voornaam"] ."', '" ;
$query .= $_POST["achternaam"] ."', '" ;
$query .= $_POST["straat"] ."', '" ;
$query .= $_POST["postcode"] ."', '" ;
$query .= $_POST["plaats"] ."', '" ;
$query .= $_POST["email"] ."', '" ;
$query .= $_POST["onderwerp"] ."', '" ;
$query .= $_POST["offerte"] ."');" ;
$result = mysql_query($query, $con) OR DIE (mysql_error());
if ($result == FALSE)
{
Echo "Niet gelukt om uw offerte aanvraag te versturen";
}
else
{
Echo "Wij hebben uw offerte aanvraag succesvol ontvangen. Wij nemen contact op binnen 24 uur";
}
}
?>
function checkvoornaam($voornaam)
{
return (preg_match ("^[A-Za-z. -]+$^", $voornaam));
}
$con = mysql_connect("localhost","","");
$dbselect = mysql_select_db("hands4art", $con);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
if (empty($_POST))
{
echo "U moet eerst een aanvraag doen via onze Offerte Formulier";
exit();
}
elseif(empty($_POST['voornaam']))
{
echo "U heeft uw voornaam niet ingevult.";
}
elseif(empty($_POST['achternaam']))
{
echo "U heeft uw achternaam niet ingevult.";
}
elseif(empty($_POST['straat']))
{
echo "U heeft uw straatnaam en nummer niet ingevult.";
}
elseif(empty($_POST['postcode']))
{
echo "Uw postcode is niet ingevult";
}
elseif(empty($_POST['plaats']))
{
echo "U heeft uw postcode niet ingevult";
}
elseif(empty($_POST['email']))
{
echo "U heeft uw email niet ingevult";
}
elseif(empty($_POST['offerte']))
{
echo " U heeft geen omschrijving ingevult";
exit();
}
elseif(!checkvoornaam($voornaam))
{
echo "Voornaam mag alleen bestaan uit letters";
exit();
}
else
{
$query= "INSERT INTO offerte ( voornaam, achternaam, straatnaam, postcode, plaats, email, onderwerp, beschrijving)";
$query .= "VALUES ('";
$query .= $_POST["voornaam"] ."', '" ;
$query .= $_POST["achternaam"] ."', '" ;
$query .= $_POST["straat"] ."', '" ;
$query .= $_POST["postcode"] ."', '" ;
$query .= $_POST["plaats"] ."', '" ;
$query .= $_POST["email"] ."', '" ;
$query .= $_POST["onderwerp"] ."', '" ;
$query .= $_POST["offerte"] ."');" ;
$result = mysql_query($query, $con) OR DIE (mysql_error());
if ($result == FALSE)
{
Echo "Niet gelukt om uw offerte aanvraag te versturen";
}
else
{
Echo "Wij hebben uw offerte aanvraag succesvol ontvangen. Wij nemen contact op binnen 24 uur";
}
}
?>
Ik heb hier een functie voor aangemaakt en bij dit stuk elseif(!checkvoornaam($voornaam))
{
echo "Voornaam mag alleen bestaan uit letters";
exit();
gaat het fout. Hij herkend dan de variable niet meer. Hoe moet ik dit oplossen?
Alvast bedankt.
Groetjes,
Julien Kulker
Gewijzigd op 11/10/2011 15:59:23 door Julien Kulker
Je eindigt je regex met een extra ^ na de $. Verder ben je de opening/sluit-delimeter vergeten.
Code (php)
Een hele waslijst aan verbeterpunten, google er eens op.
Antwoord op je vraag:
$voornaam is niet gezet, het moet dan zijn $_POST['voornaam']. ;)
ik weet niet hoe dit reageert op bijvoorbeeld een naam als Corné (é), dat zul je even moeten testen.
en ingevult != ingevuld
Gewijzigd op 11/10/2011 15:49:49 door Jens erd
Script is lek => SQL-Injection.
Gebruik mysql_real_escape_string().
Toevoeging op 11/10/2011 15:49:25:
Jens erd op 11/10/2011 15:46:19:
en ingevuld != ingevuld
Volgens mij wel hoor. Je bedoelt dit:
en ingevult != ingevuld
Quote:
Je eindigt je regex met een extra ^ na de $. Verder ben je de opening/sluit-delimeter vergeten.
Hij geeft in mijn script aan dat ^ de start is van de delimeter. Als ik die op het einde weg haal dan geeft hij juist de melding dat de delimeter niet gezet is.
Voor de rest ben ik eerst alle controles aan het toevoegen en daarna zal ik de aandacht besteden aan het beveiligen van me script. Ik heb nog niet super veel ervaring en dit is puur voor mij om te leren.
Bedankt in iedergeval!