Bepaalde tekens herkennen in een string
aangezien ik eigenlijk overal gezocht heb en het nhiet heb kunnen vinden vraag ik jullie hulp maar
ik zoek een controlescriptje die kan kijken of er verboden tekens aanwezig zijn
het gaat om de tekens: _ \ / . & * ()^ % $ # @ ! [ ] { } : ; > < € |
dus het word gepost met: $_POST['username']
en ik wilde zo iets gebruiken:
wie weet hoe ik dit het beste kan oplossen?
Whitelisten is beter dan blacklisten!
Pim de Haan op 04/10/2010 22:15:36:
Whitelisten is beter dan blacklisten!
hoe kan ik dat het beste aanpakken?
Kijk op php.net eens naar ctype
preg_match();
Je moet het zo zien:
Als je dit allemaal weigert: _ \ / . & * ()^ % $ # @ ! [ ] { } : ; > < € |, dan accepteer je dus: , ~ ` ø ß en dan nog 60000 andere tekens weggelaten.
Je kunt beter zeggen:
Ik wil alleen kleine letters (a-z), hoofdletters (A-Z), cijfers (0-9), streep - .. etc.
Dan kun je een regex samenstellen: tutorial();
Ook d.m.v. Je moet het zo zien:
Als je dit allemaal weigert: _ \ / . & * ()^ % $ # @ ! [ ] { } : ; > < € |, dan accepteer je dus: , ~ ` ø ß en dan nog 60000 andere tekens weggelaten.
Je kunt beter zeggen:
Ik wil alleen kleine letters (a-z), hoofdletters (A-Z), cijfers (0-9), streep - .. etc.
Dan kun je een regex samenstellen: tutorial();
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if(preg_match('/[a-zA-Z\\d]+/',$_POST['user']))
{
$temp=userByName($_POST['user']);
if($temp['username']!="" || $_POST['user'] == "desktop" || $_POST['user'] == "Desktop" || $_POST['user'] == "DESKTOP" || $_POST['user'] == "gprs" || $_POST['user'] == "GPRS" || $_POST['user'] == "Gprs")
{
$active--;
print "<div id='error'>Gebruikersnaam bestaat al</div>";
}
elseif($_POST['user']=="")
{
$active--;
print "<div id='error'>Gebruikersnaam kan niet leeg zijn!</div>";
}
else
{
print "<div id='error'>Naam beschikbaar</div>";
}
}
else{
print "<div id='error'>Er werden niet toegestane tekens ingevoerd</div>";
$active--;
}
}
{
$temp=userByName($_POST['user']);
if($temp['username']!="" || $_POST['user'] == "desktop" || $_POST['user'] == "Desktop" || $_POST['user'] == "DESKTOP" || $_POST['user'] == "gprs" || $_POST['user'] == "GPRS" || $_POST['user'] == "Gprs")
{
$active--;
print "<div id='error'>Gebruikersnaam bestaat al</div>";
}
elseif($_POST['user']=="")
{
$active--;
print "<div id='error'>Gebruikersnaam kan niet leeg zijn!</div>";
}
else
{
print "<div id='error'>Naam beschikbaar</div>";
}
}
else{
print "<div id='error'>Er werden niet toegestane tekens ingevoerd</div>";
$active--;
}
}
alleen wanneer er letters tussen staan word hij nog goedgekeurd, hij moet hem dann gewonn afkeuren, wat doe ik fout?