Yo usaría sesiones:
En alguna parte de tu sistema inicias tu variable de sesión (login?) dando un valor a esta .. o bien si no usas sistema de control de usuarios simplemente en la página que llame a tu otro script defines tu variable de sesión y en ese script aparte que llamas, validas la existencia de esa variable de sesión .. SI existe es que pasó por la página principal de tu sistema que en su proceso/procedimiento llama a tu otro script .. si no existe, intentó acceder directamente.
pagina_x.php
Código PHP:
<?
session_start();
$_SESSION['autentificado']="Da igual el valor";
// etc de tu script . ..
?>
Tu script a proteger.php
Código PHP:
<?
session_Start();
if (empty($_SESSION['autentificado'])){
// no está autentificado
exit; // salimos del script .. no corresponde accceso directo.
}
// resto de tu script tal cual lo usas actualmente ...
más info sobre sesiones:
www.php.net/session (y las FAQ's de este foro php).
Un saludo,