Con sesiones sería algo tipo:
en tu página principal que llama a las otras ..
Código PHP:
<?
session_start();
$_SESSION['paso_por_donde_yo_quiero']=TRUE;
<?
resto de tu código actual ...
Y en las otras págianas que no quieres que sean accedidas directamente:
Código PHP:
<?
// El session_start(); ya estaría iniciado en tu script "padre" .. Si se llama directo .. ni se accederá a $_SESSION por ende no existirá y se redireccionará hacia tu página que indiques (puedes usar rutas [url]http://www.tal.tal[/url] por si llamasen al script desde otros sitios ...
if (!isset($_SESSION['paso_por_donde_yo_quiero'])){
header ("Location: index.php");
exit;
}
?>
resto de tu código actual ...
También podrías jugar con la variable de servidor HTTP_REFERER para ver si llega desde otra página (incluso de tu index.tal ..) o PHP_SELF y ver en que página está .. Pero, más seguro usar sesiones (o cookies como comentó CHILENOCES).
Un saludo,
PD: El SID (identificador único de sesión asumo que se propaga por cookies y que se usa un navegador que acepte cookeis. PHP versión 4.1.0 en adelante requerida por el acceso y uso de los arrays superglobales.