¿Cómo escribo un programa donde un usuario crea un nombre de usuario para iniciar sesión y también obtiene ese nombre de usuario en mydomain.com/username?

En un marco de desarrollo web como node.js o sinatra, puede manejar todas las URL en un archivo de código. Esto se llama enrutamiento. Un ejemplo de sinatra podría verse así:

  get '/: username' do
   # coincide con "GET / foo" y "GET / bar"
   # params [: username] es 'foo' o 'bar'
   "Hola # {params [: nombre de usuario]}!"
 fin

En php normalmente no puedes manejar las URL directamente. en cambio, las URL coinciden con los nombres de archivo, por lo que para http://mydomain.com/this.php se supone que debe haber un archivo this.php para manejar la solicitud.

Puede solucionar esto utilizando apaches mod_rewrite. Un ejemplo bien conocido es la reescritura utilizada por WordPress (ver WordPress Codex: Uso de enlaces permanentes)

  
 RewriteEngine On
 RewriteBase /
 RewriteRule ^ index \ .php $ - [L]
 RewriteCond% {REQUEST_FILENAME}! -F
 RewriteCond% {REQUEST_FILENAME}! -D
 RewriteRule.  /index.php [L]
 

Esto enviará todas las solicitudes al programa php almacenado en index.php. en index.php puede buscar la URL original en $ _SERVER [‘QUERY_STRING’]

La manera más simple sería agregar una regla de reescritura de URL que enrutará todas las solicitudes a nombres de archivo inexistentes a su página de índice que luego procesa el nombre de usuario y muestra la página en particular.