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