1) Подскажите пожалуйста, почему если после "index.php" ставлю косую "/" то на экран выводится все в виде текста - без стилей (пользуюсь денвером), просто хочу сразу найти некоторые решения проблем перед покупкой хостинга. И если перейти по какой либо ссылке на сайте, когда "index.php/" то получается что то подобное "http://test1.ru/index.php/index.php?man=Del", "index.php" дублируется. 2) Сделал проверку несуществующих страниц такого плана: Код (PHP): $not_print_table = 0; if (isset($_GET['rem'])) { if ($_GET['rem'] == "rem_engine.php") { $not_print_table++; $right_content = "papka/rem_engine.php"; $title = "название страницы"; } } // таких сравнений много все они проверяют нажатие раздела в левом меню. .... if ($not_print_table != 0) { include_once $right_count; } else { include_once $error404; } То есть я проверяю все существующие у меня переменные, если они реальны, то в правом блоке отображается текст соответствующий разделу. Если переменных нет или же в строке браузера введена какая-то чушь, то в правом блоке печатается ошибка 404 с "noindex" для поисковиков. И тут получается что главная страница my_site.ru/index.php у меня идет как "404". Подскажите как мне взять браузерную строку и проверить ее на наличие ""index.php" и "index.php/", и если дальше пустота то я инклудил бы стартовую страницу. 3) Как сделать проверку, опять же на "404", на страница сайта которые у меня инклудяться ? То есть если адрес страницы "index.php/papka/file.php" вызван с браузера, то выдавалась бы ошибка "404", так как файл по этому адресу у меня инклудится в сайт, и его показ пользователю не желателен.
Там старая версия php и apache и фиг знает как настроен. Это как спрашивать почему у кареты рессоры скрепят или типа того. Почитай про настройку apache версии которая в denwer. Можно ещё denwer заменить на open-server.ru или ещё лучше всё настроить самому.
видимо сейчас стили используют относительный путь, а не абсолютный. указывай абсолютный как "/css/main.css" http://phpfaq.ru/newbie/paths та же самая причина: относительный путь. ставь ссылки как "/index.php?blablabla" дальше идет какой-то бред, прости господи! не уверен, что понял твою цель. если что, есть такой приём "белый список", позволяет отбросить все варианты кроме разрешенных. типа: Код (PHP): $whiteList = array('first', 'second', 'third'); $page = isset($_GET['page']) ? $_GET['page'] : ''; if (!isset($whiteList[$page])) { header("HTTP/1.0 404 Not Found"); exit; } include __DIR__."/{$page}.php";
Спасибо большое ребят ! А как правильно взять браузерную строку, что бы ее сравнивать с белым списком?
а такой вариант норм будет ? Код (PHP): <?php //это в точке входа front controller define(INSIDE_APP, true); Код (PHP): <?php //это в файлах которые не должны запускаться if(!defined(INSIDE_APP))die; просто в твоём варианте меня смущает что надо что то гетом передавать всегда
Норм, это классика жанра, которая юзается повсеместно,но проверять if(!defined(INSIDE_APP))-то зачем? К тому же с ошибкой. Имя константы в кавычках надо писать. Просто defined('INSIDE_APP') or die; и все
Строго говоря это не ошибка, а предупреждение. То есть как-то работает, не валится. [sarcasm]А вывод предупреждений 100% отключен, ибо нафиг их видеть вообще! Выключил и забыл.[/sarcasm]
То, что Арту привел в пример - не для защиты от доступа к инклудящимся файлам, а для того, чтобы не париться, когда пользователь по страницам ходит, что он вобьет в гет какую-то муть, которая что-то там откроет ему. Просто заранее ограничиваешь список параметров, на которые система должна реагировать. Если в запросе такого нет, кидаешь 404.