Basta verificar o valor da variável global $PHP_SELF. Quando se cria um arquivo de classes ou funções, sabe-se que eles não serão usados sozinhos, mas sim chamados por outros scripts através do include() ou do require(). Para certificar-se que o usuário não chamará estes arquivos sozinhos através de uma URL, teste pela variável $PHP_SELF. Se o valor dessa variável for o nome do arquivo do próprio arquivo de funções ou classes, impede o usuário. Caso o arquivo de funções tenha sido incluído em outro script por meio de include, então o valor da variável global $PHP_SELF mostrará o nome deste outro arquivo. Outra maneira, que em meus scripts coloco como condição adicional à opção acima, é o uso de uma variável de Sessão. Você cria uma variável de sessão para o usuário no momento em que ele logar no seu site, checando durante a navegação dele por entre as páginas se a variável de sessão é válida para que ele estiver solicitando. Nela você pode guardar, por exemplo, o ID do usuário. Se ele existir, OK, deixa o usuário acessar a página, se não existir ou se for NULL, então impede o acesso. Já dá para fazer uma segurança considerável com isso.