Para esto tenés varias formas de control:
1.- HTTP_REFERER: cabecera no obligatoria y por lo tanto poco confiable...
2.- Una variable por la URL (GET)
3.- un formulario (POST)
En cualquier caso, la lógica sería:
Si no está definida $_GET... o $_POST -> exit;
o
Si (HTTP_REFERER no contiene X valor) -> exit
Esto lo podés hacer con isset o strpos según el caso.
http://www.php.net/isset http://www.php.net/strpos
Saludos.