hay muchas maneras de lograrlo, casi siempre necesitas tener una base de datos o algo similar con los nombre y contraseñas...
 
el script no es muy complejo, incluso HTTP provee de un método sencillo para hacer esto sin mucha dificultad... 
es lo mas básico que existe, lo demás... investiga por tu cuenta: sistemas de login, de descargas, etc, etc... 
- 
http://php.net/manual/en/features.http-auth.php