Mira, hay toneladas de información al respecto en multitud de páginas dedicadas al desarrollo web y PHP, cualquiera te puede mostrar código fuente para implementar lo que digo pero básicamente...
Tienes página login.php donde está el formulario que pide usuario y contraseña, el formulario apunta a otro script verificar.php que es donde recoges los datos y los comparas con la base de datos de los usuarios registrados. Si el usuario existe y la contraseña es correcta haces.
session_start();
$_SESSION["logged"]["user"] = $elnombredelusuario;
$_SESSION["logged"]["pass"] = $lacontrasenadelusuario;
header("Location: index.php");
Lo que hace aquí es crear una sesión para ese visitante, guardas los datos de loggin en el array $_SESSION, éste array es único para el visitante actual, de forma tal que si otro visitante hace el mismo proceso, ese otro visitante tendrá una sesión distinta y solo válida para él.
Después en la página que quieres restringir el acceso a solo usuarios registrados puedes hacer:
session_start();
if (!isset($_SESSION["logged"]) {
echo "No has iniciado sesión.";
exit;
}
Y ya está.
En este caso session_start() hace que si no existe sesión alguna, la crea, pero como no hay nada en $_SESSION el if dará falso, pero si ya existe una sesión abierta con ese visitante pone a tu disposición la variable $_SESSION que se creó durante el loggin, entonces el if dará verdadero y podrá seguir con el resto de la página.
Para el resto de las cosas lee la ayuda de PHP en línea.