Ik ben bezig mijn site wat te optimaliseren.. en wil het aanmeld formulier wat beter beveiligen..
Zo heb ik nu dat de gebruikersnaam minimaal 3 en max 15 tekens kan zijn.. nu wil ik alleen nog zo beveiligen dat de gebruikersnaam enkel uit letters en cijfers mogen bestaan en geen andere tekens.. Hoe doe ik dit precies? ik heb het volgende al op me site..
if(empty($gebruikersnaam)){ $errors[] = "- Je hebt geen gebruikersnaam ingevoerd."; }
if($count_gebruikersnaam > 0){ $errors[] = "- Deze gebruikersnaam bestaat al."; }
if(strlen($gebruikersnaam) > 15){ $errors[] = "- De gebruikersnaam mag niet langer zijn dan 15 tekens."; }
if(strlen($gebruikersnaam) < 3){ $errors[] = "- De gebruikersnaam mag niet korter zijn dan 3 tekens."; }
Ik moet dus enkel 1 regel hebben maar ik weet niet precies hoe die eruit moet zien..
- Hoe geen rare tekens in een form toestaan?
-
27-12-2009, 11:44 #1
- Berichten
- 1.406
- Lid sinds
- 17 Jaar
Hoe geen rare tekens in een form toestaan?
-
-
27-12-2009, 11:48 #2
- Berichten
- 330
- Lid sinds
- 18 Jaar
Dit kan je doen door deze preg_match:
PHP Code:<?
if (!preg_match("/^\w+$/", $_POST['input'])) {
echo 'De input bevat ongeldige tekens (alleen cijfers en letters toegestaan)!
}
?>
-
27-12-2009, 11:49 #3
- Berichten
- 1.406
- Lid sinds
- 17 Jaar
Hartstikke bedankt!
-
27-12-2009, 11:56 #4
- Berichten
- 21
- Lid sinds
- 15 Jaar
PHP Code:if (!ereg("^[A-Za-z0-9]{3,15}$", $_POST['input'])) {
echo 'De input mag alleen cijfers en letters bevatten en moet tussen de 3 en 15 karakters lang zijn.';
}
Btw, Arjen: waarom preg_match? Ik snap het sowieso niet. Ik gebruik altijd ereg(), ook snap ik je hele statement achter preg_match() niet, kun je die toelichten?
-
27-12-2009, 12:08 #5
- Berichten
- 330
- Lid sinds
- 18 Jaar
Die van jou is inderdaad beter, aangezien deze ook gelijk het 3 t/m 15 verhaal oplost. De \w geeft aan dat alle word karakters (a-z,0-9 en underscore) zijn toegestaan. Echter is jouw methode beter om te gebruiken.
-
27-12-2009, 12:16 #6
- Berichten
- 21
- Lid sinds
- 15 Jaar
Idd zijn misschien _ en - ook wel handig in gebruikersnamen, maar dat is aan de topicstarter :)
-
27-12-2009, 14:56 #7
- Berichten
- 68
- Lid sinds
- 18 Jaar
Als je hem nu zo maakt:
PHP Code:if (!ereg("^[A-Za-z0-9]{3,15}$", $_POST['input'])) {
echo 'De input mag alleen cijfers en letters bevatten en moet tussen de 3 en 15 karakters lang zijn.';
}
Btw, Arjen: waarom preg_match? Ik snap het sowieso niet. Ik gebruik altijd ereg(), ook snap ik je hele statement achter preg_match() niet, kun je die toelichten?
De vervanger zou dus zijn:
PHP Code:if (!preg_match("/^[A-Za-z0-9]{3,15}$/", $_POST['input'])) {
echo 'De input mag alleen cijfers en letters bevatten en moet tussen de 3 en 15 karakters lang zijn.';
}
-
28-12-2009, 13:34 #8
- Berichten
- 21
- Lid sinds
- 15 Jaar
Ah, dat deptricated wist ik helemaal niet :)
Vandaar dus.. :)
Heb even op php.net rond zitten neuzen, maar bij preg_match worden altijd / om de regex heen gezet?
-
28-12-2009, 13:53 #9
- Berichten
- 58
- Lid sinds
- 18 Jaar
Nee kan ieder teken zijn.
-
28-12-2009, 21:08 #10
- Berichten
- 21
- Lid sinds
- 15 Jaar
Maar waarom staan ze er dan omheen? Is daar een reden voor?
Je begint met "/^ en eindigt met $/": Die ^ en $ zijn natuurlijk optioneel, maar de dubbele aanhalingstekens geven de strekking van de string toch aan. Waarom dan toch die forwardslash?
-
30-12-2009, 15:06 #11
- Berichten
- 58
- Lid sinds
- 18 Jaar
Met de dubbele aanhalingstekens (") geef je inderdaad de strekking van de string aan, maar met de / (of ieder ander teken) geef je de strekking van je pattern aan. Waarom het er precies in zit weet ik ook niet precies, maar het moet er wel in.
-
02-01-2010, 19:06 #12
- Berichten
- 376
- Lid sinds
- 18 Jaar
Leuke extra: http://itgroup.com.ph/alphanumeric/
-
02-01-2010, 19:32 #13
- Berichten
- 1.053
- Lid sinds
- 17 Jaar
Je geeft met de slashes, of ieder ander gelijk teken, inderdaad het begin en einde van het pattern aan. Ik denk dat dit te maken heeft met de historie. Zo zijn er verschillende talen waarin RegExp's geïntegreerd zijn in bijv de vorm van:
Code:if (!/\w{3,15}/i.match('ongeldige!-tekens?')) {}
Ps. Volgens mij zijn die '^' en '$' overbodig in deze query?
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic