fork download
  1. <?php
  2.  
  3. function validate_username($username){
  4. // Enforce that username has to be 3-100 characters, alphanumeric, and first character a letter.
  5. // Possibility without begin/end characters and i: [a-z][a-z0-9@.+-_]{2,100}
  6. // Allow for simple email usernames in the future...
  7. return !!preg_match('#^[a-zA-Z][a-zA-Z0-9@.+-_]{2,100}$#', trim($username)); // Note the regex string is single quoted.
  8. }
  9.  
  10.  
  11.  
  12. $good_test_cases = array(
  13. 'good',
  14. 'AllUppercase',
  15. 'AllLowercase',
  16. 'username23434',
  17. 'jsherman@shermanbrothers.com',
  18. 'bobz',
  19. 'william',
  20. 'testzor',
  21. 'William',
  22. 'WiLiAm',
  23. 'Herkamer',
  24. 'test@example.com',
  25. 'will@iam.net',
  26. 'roy-ronalds@gmail.com',
  27. 'roy.ronalds@gmail.com',
  28. 'roy+ronalds@gmail.com',
  29. 'roy_ronalds@gmail.com',
  30. 'roy_ron_alds@gmail.com'
  31. );
  32.  
  33.  
  34.  
  35. $false_test_cases = array(
  36. 'ba*d',
  37. 'Mark%twain',
  38. '\'apos',
  39. 'apos\'',
  40. 'quo"tes',
  41. 'angle<bracket',
  42. 'angle>bracket',
  43. 'html<script>inside',
  44. '!username',
  45. '6farsi',
  46. '$%^$%',
  47. 'O\'Brian'
  48. );
  49.  
  50. // These should pass.
  51. foreach($good_test_cases as $value){
  52. assert(validate_username($value));
  53. }
  54.  
  55. // These should pass (but not all of them do)
  56. foreach($false_test_cases as $val){
  57. assert("!validate_username('".addslashes($val)."')");
  58. }
  59. ?>
Success #stdin #stdout 0.02s 13112KB
stdin
Standard input is empty
stdout
Warning: assert(): Assertion "!validate_username('angle<bracket')" failed in /home/D6ry3z/prog.php on line 57

Warning: assert(): Assertion "!validate_username('angle>bracket')" failed in /home/D6ry3z/prog.php on line 57

Warning: assert(): Assertion "!validate_username('html<script>inside')" failed in /home/D6ry3z/prog.php on line 57