есть страница 1.php и 2.php так вот как сделать чтоб из страницы 1.php на страницу 2.php можно было перейти, а если просто страницу 2.php запускать в браузере, или с другой страницы, чтоб не переходило))
Возможно, так: PHP: <?php $ref = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : ''; if(strpos($ref, '/1.php') === false) exit('фиг вам'); // ... ?> Добавить в начало файла 2.php
1.php PHP: <?php ... $_SESSION['checkPoint1']=true; .... 2.php PHP: <?php ... if (!isset($_SESSION['checkPoint1']) || !$_SESSION['checkPoint1']){ header(Location:'/'); } ....
нет, но пишет Parse error: syntax error, unexpected ':' in Z:\home\site\www\zap.php on line 4 а должно как я понял на главную кидать ----------------- (Location:'/')
Топикстартер 100% забыл кавычки вокруг Location: поставить в header, но в мануале же лень копаться самому. Другие подскажут.
1.php PHP: <?php session_start(); $_SESSION['checkPoint1'] = true; ?> 2.php PHP: <?php session_start(); if(!isset($_SESSION['checkPoint1']) || !$_SESSION['checkPoint1']) { header('Location: /'); } ?> session_start() - в самое начало, до какого-либо вывода в браузер.
О это работает, только функция всеравно продолжается, хоть и редиректит на главную, но исполняет команды скрипта, который идет после проверки сессии!)))
Вот мой вариант - добавил генератор случайных чисел - отлично работает: php1: PHP: <?php session_start(); srand((double) microtime( ) * 1000000); $uniq_id = uniqid(rand( )); $_SESSION['uniq_id'] = true; ?> PHP2: PHP: <?php session_start(); if(!isset($_SESSION['uniq_id']) || !$_SESSION['uniq_id']) { header('Location: /'); } ?>
igordata добавляет случайное число примерно такого вида - 45aba50df7d3cca42b61d7e1bdbeafb2 во втором файле проверяется его наличие и в случае отсутствия такового страница просто не выводится =)
Nelepostb жесть)))) Этот код вполне соответствует вашему нику)))) Кстати, если вычеркнуть из первого файла 3 и 4 строки - на работу это никак не повлияет))))
Nelepostb во-первых, он не проверяет наличие числа. Он проверяет, что переменная определена. А что в ней - не проверяет. Как следствие: во-вторых, после единократного создания переменной, этот скрипт ВСЕГДА будет позволять открывать второй файл без первого. =) а вобще направление мысли правильное. Чтобы избежать запуска инклудов без основного скрипта нужно просто сесть попой на клавиатуру два раза: PHP: <? $kdjgfaklgfkjgrkhjr="f8yeuhbhvf74ebnbgpq"; и скопипастить проверку значения в остальные инклуды. Хотя хочу сказать, что при современных ценах на харды проще делать ежедневный бэкап.
Добавить на страницу 1.php Код (Text): define('page', true); На страницу 2.php Код (Text): if(!defined("page")) die('Использовать 2.php можно только через 1.php'); Или я не так понял?