Скажите пожалуйста как сделать так: Пользователь может нажимать только по ссылкам на сайте например domen.ru/bla.php, а если он просто набрал в адресе domen.ru/bla.php, то его например перекидывало на главную.
Все HTTP_* заголовки можно подделать, в том числе и реферез. Да. Но вряд ли кому-то это будет нужно. Пиши УРЛы по которым ходил юзер в сессии.
- запуск сессии только со стартовой - если сессии нет то перенаправляем на стартовую - сохранять в сессии путь последней запрошенной странички - при переходе на какие либо странички сайта "сохранненая предыдушая страничка" (см. пункт выше) должна быть стартовой, иначе перенапрвляем на стартовую но чувствую это будет проблемно, из-за "назад/вперед", да и не совсем удобно, когда пользователь не может воспользовать адресной строкой. Лучше сохранять в сессии время последнего запроса к сайту и если оно не превышает скажем 5 минут, то не перенаправлять на главную. Ну или как там(я еще сам не разобрался с сессиями) например выставить что сессия "держится" 5 минут, пока сессия "держится" не ограничивать пользователя
Вариант: Создавать форму с POST передачей и невидимым полем, при нажатие на сылку запускать ява-скрипт отправки формы. Далее проверять POST-параметры если они есть - то все ок. А тебе точно нужен этот геморой?!