[PHP] String controleren op ongeldige tekens *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 14-09 21:45
Ik heb voor het aanmelden bij mijn website de volgende restricties op de gebruikersnaam gelegd:

PHP:
1
2
3
4
if(eregi("[^A-Za-z0-9_]+", "$gebruikersnaam")) {
 $error_message .= "Je hebt een ongeldig teken in je gebruikersnaam, 
je mag gebruiken: A-Z,a-z en 0-9";
}


Nu zijn er toch nog mensen met een ' of een * in hun gebruikersnaam.

Weet iemand waarom die door deze check heenkomen?

Ik blijf er iig vrij nuchter onder....


Acties:
  • 0 Henk 'm!

  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Waarom deze niet werkt, weet ik eigenlijk ook niet. Als er 1 of meer chars in voorkomen die niet tot [A-Za-z0-9_] behoort, levert dit gewoon een extra $error_message op toch?

Ik gebruik meestal zoiets:
PHP:
1
2
3
if(!ereg('^[A-Za-z0-9_]+$', $str)) {
  //error
}

This can no longer be ignored.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

modbreak: als je heel de topiclijst hier vol ziet staan met [taal] voor de topictitle ben je dan echt te lam om zelf ook even [PHP] ervoor te typen zodat het overzichtelijk blijft voor iedereen? :/

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 17-09 22:12
Allereerst haal die " om je $gebruikersnaam weg. Deze regular expression die jij hier geeft doet precies wat jij wil, laat allen A-Z, a-z, 0-9 en _ toe. Dus mijn glazen bol zegt dan dat ergens ander een foutje in je code zit.

Maar stopt je script ook als iemand een verkeerde gebruikersnaam invuld? Of gaat de PHP parser leuk door met zn werk en voert dan wellicht misschien de code uit om aan te melden?

Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 14-09 21:45
curry684 schreef op 06 juli 2003 @ 21:49:
<span style="color:blue">modbreak: als je heel de topiclijst hier vol ziet staan met [taal] voor de topictitle ben je dan echt te lam om zelf ook even [PHP] ervoor te typen zodat het overzichtelijk blijft voor iedereen? :/</span>
Sorry, even vergeten. Doe het altijd, check mijn history.


Het script stopt natuurlijk met een

PHP:
1
2
3
4
if(strlen($error_message) > 0){
  //do iets
  exit();
}

Ik blijf er iig vrij nuchter onder....


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb het even getest en met je regexp is in ieder geval niets mis. Is het niet zo dat je de error-check pas uitvoerd na dat er een transactie naar de database toe plaatsvindt?

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

maartenvdv schreef op 06 July 2003 @ 22:54:
[...]

Sorry, even vergeten. Doe het altijd, check mijn history.


Het script stopt natuurlijk met een

PHP:
1
2
3
4
if(strlen($error_message) > 0){
  //do iets
  exit();
}
Dan is if(isset($error_message)) {} mooier ;)

Misschien is het ook nog handig de lengte van de gebruikersnaam in de regex op te nemen op deze manier: [A-Za-z0-9_]+${1,25} gebruiken, dat zorgt ervoor dat de string minimaal 1 teken en maximaal 25 tekens mag hebben.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.

Pagina: 1