Por acceso directo te refieres a que no puedan accesar escribiendo directamente la URL en la barra de direciones?
Si es asi usa entonces la variable de servidor HTTP_REFERER que contiene la direccion de la pagina que mando llamar al script actual, si dicha variable esta vacia quiere decir que estan escribiendo directamente la direccion.
usala asi:
Código PHP:
if ($_SERVER['HTTP_REFERER'] == "")
{
header ("Location: index.php"); //o la pagina que quieras redireccionar
}
saludos!