За последние 24 часа нас посетили 71316 программистов и 10275 роботов. Сейчас ищут 2727 программистов ...

запрет показа инклудных файлов + еще...

Тема в разделе "PHP для новичков", создана пользователем BuToZ, 23 фев 2016.

  1. BuToZ

    BuToZ Активный пользователь

    С нами с:
    24 янв 2016
    Сообщения:
    11
    Симпатии:
    0
    1) Подскажите пожалуйста, почему если после "index.php" ставлю косую "/" то на экран выводится все в виде текста - без стилей (пользуюсь денвером), просто хочу сразу найти некоторые решения проблем перед покупкой хостинга. И если перейти по какой либо ссылке на сайте, когда "index.php/" то получается что то подобное "http://test1.ru/index.php/index.php?man=Del", "index.php" дублируется.

    2) Сделал проверку несуществующих страниц такого плана:
    Код (PHP):
    1. $not_print_table = 0;
    2.  
    3. if (isset($_GET['rem'])) {
    4.     if ($_GET['rem'] == "rem_engine.php") {
    5.         $not_print_table++;
    6.         $right_content = "papka/rem_engine.php";
    7.         $title = "название страницы";
    8.     }
    9. }
    10.  
    11. // таких сравнений много все они проверяют нажатие раздела в левом меню.
    12.  
    13. ....
    14.  
    15. if ($not_print_table != 0) {    
    16.     include_once $right_count;
    17. }
    18. else
    19. {
    20.    include_once $error404;
    21. }
    22.  
    То есть я проверяю все существующие у меня переменные, если они реальны, то в правом блоке отображается текст соответствующий разделу. Если переменных нет или же в строке браузера введена какая-то чушь, то в правом блоке печатается ошибка 404 с "noindex" для поисковиков.

    И тут получается что главная страница my_site.ru/index.php у меня идет как "404".
    Подскажите как мне взять браузерную строку и проверить ее на наличие ""index.php" и "index.php/", и если дальше пустота то я инклудил бы стартовую страницу.

    3) Как сделать проверку, опять же на "404", на страница сайта которые у меня инклудяться ? То есть если адрес страницы "index.php/papka/file.php" вызван с браузера, то выдавалась бы ошибка "404", так как файл по этому адресу у меня инклудится в сайт, и его показ пользователю не желателен.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Там старая версия php и apache и фиг знает как настроен.
    Это как спрашивать почему у кареты рессоры скрепят или типа того.
    Почитай про настройку apache версии которая в denwer.
    Можно ещё denwer заменить на open-server.ru или ещё лучше всё настроить самому.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    видимо сейчас стили используют относительный путь, а не абсолютный. указывай абсолютный как "/css/main.css"
    http://phpfaq.ru/newbie/paths

    та же самая причина: относительный путь. ставь ссылки как "/index.php?blablabla"

    дальше идет какой-то бред, прости господи! не уверен, что понял твою цель. если что, есть такой приём "белый список", позволяет отбросить все варианты кроме разрешенных. типа:

    Код (PHP):
    1. $whiteList = array('first', 'second', 'third');
    2. $page = isset($_GET['page']) ? $_GET['page'] : '';
    3. if (!isset($whiteList[$page])) {
    4.   header("HTTP/1.0 404 Not Found");
    5.   exit;
    6. }
    7. include __DIR__."/{$page}.php"; 
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    потому что css прописал не от корня
     
  5. BuToZ

    BuToZ Активный пользователь

    С нами с:
    24 янв 2016
    Сообщения:
    11
    Симпатии:
    0
    Спасибо большое ребят !

    А как правильно взять браузерную строку, что бы ее сравнивать с белым списком?
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    BuToZ вызови phpinfo(); и посмотри на массив _SERVER и документацию по нему.
     
  7. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    489
    Симпатии:
    21
    а такой вариант норм будет ?
    Код (PHP):
    1. <?php
    2. //это в точке входа front controller
    3. define(INSIDE_APP, true); 
    Код (PHP):
    1. <?php
    2. //это в файлах которые не должны запускаться
    3. if(!defined(INSIDE_APP))die; 
    просто в твоём варианте меня смущает что надо что то гетом передавать всегда
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Норм, это классика жанра, которая юзается повсеместно,но проверять if(!defined(INSIDE_APP))-то зачем? К тому же с ошибкой. Имя константы в кавычках надо писать.

    Просто defined('INSIDE_APP') or die; и все
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    Строго говоря это не ошибка, а предупреждение. То есть как-то работает, не валится.
    [sarcasm]А вывод предупреждений 100% отключен, ибо нафиг их видеть вообще! Выключил и забыл.[/sarcasm]
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    То, что Арту привел в пример - не для защиты от доступа к инклудящимся файлам, а для того, чтобы не париться, когда пользователь по страницам ходит, что он вобьет в гет какую-то муть, которая что-то там откроет ему.

    Просто заранее ограничиваешь список параметров, на которые система должна реагировать. Если в запросе такого нет, кидаешь 404.