???
Математика на уровне МГУ

Показано с 1 по 25 из 54

Тема: PHP-вопрос

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #13
    Мастер Аватар для DogEater
    Регистрация
    03.11.2001
    Адрес
    Подмосковье
    Возраст
    52
    Сообщений
    4,442

    Ответ: PHP-вопрос

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    Список у тебя на винте есть всегда.
    Можно входящую строку проверить на слеши и сделать if fileexist()
    А можно сделать list папки и сравнить поэлементно массив с входной строкой.
    И так, и так никакая инъекция не пройдёт.
    Ну да. Цифры в полученной переменной могут быть всего лишь номером(ключом) массива из имён файлов(см glob()). Сначала отдаёшь номер элемента массива, содержащего имя файла в ссылку, а при запросе по номеру подгружаешь контент по имени из этого элемента.
    Куда уж безопаснее.
    Вот так делаем ссылку:
    Код:
    <?php
    $files=glob ($config['incpath']."/files/*jp*");
        foreach ($files as $file){
            print "<a href=".$SERVER['SCRIPT_NAME']."?id=".$id++.">Файл No $id</a>\n";
        }
    ?>
    Вот так формируем ответ:
    Напрямую снаружи ничего не берётся. Только подкидывай фалы в папку(если *nix - регистр в имени файла учитывается).
    Код:
    <?php
    $files=glob ($config['incpath']."/files/*jp*");
    if (preg_match ("/(\d+)/",$_GET['id'],$id)){
        if (is_file($files[$id[1]]))
            include($files[$id[1]].".htm");
        }
    else {
        if (is_file("1.htm"))
            include("1.htm");
    }
    ?>
    Крайний раз редактировалось DogEater; 20.03.2010 в 00:11.
    "Прежде чем открыть огонь - оглянись!"
    А.В. Ворожейкин "Сильнее смерти", стр 9.
    "<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
    Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
    © DEDA
    1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •