Почему зря и откуда у меня список?...
Сегодня содержание такое-то - а завтра хозяин попросил добавить пару html-файлов и двести фото...
Нет, конечно, если ты всерьёз считаешь, что мне проще сделать длинный список, чем вызывать поимённо нужный файл - то я с тобой соглашусь... но чем это будет проще я пока не понимаю.
Ну да. Цифры в полученной переменной могут быть всего лишь номером(ключом) массива из имён файлов(см 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
Тогда массив где-то хранить надо иначе при добавлении файлов ссылки поплывут.
Ну а как заинъектировать что-то, чего нет в нужной папке в этом случае - я не знаю. Даже если слеши не проверять - include("имяпапки\".$_GET['id'].".hml") или ругнётся или возьмёт что надо. Особенно если подпапок нет.
Ну для пущей перестраховки - перепровериться на слеши или удалить их.
Просто, прямой вызов, как я понял, ты хочешь делать в куче файлов контента, который будет изменяться, расширяться, дополняться. И эти прямые вызовы нужно запихнуть в каждый такой файл.
А можно, как ты вначале и собирался сделать один маленький шаблон, в котором 2 статических вызова и 1 динамический.
Не... Ну учить тебя делать проекты я не буду.Я сам готов поучиться и решение тебе принимать - просто предлагаю конкретное, маленькое решение как один из кучи вариантов.
Через ?id="file" запрашиваешь нужный файл контента из папки "folder".Код:<?php include("header.htm"); if !(preg_match ("/[\/]/",$_GET['id'])){ if (is_file("folder\".$_GET['id'].".htm")){ include("folder\".$_GET['id'].".htm"); } else{ include("folder\1.htm"); } } else { include("folder\1.htm"); } include("footer.htm"); ?>
И получаешь готовую страничку.
Инъекция при таком раскладе не грозит. Безопасность на месте, весь контент лежит в одной папке, из соображений паранойи "только для чтения".
Вооот! Так я об этом и говорил, Андрей - простое решение для простых задач. Мне оно очень понравилось! (И не в последнюю очередь из-за понимания процесса...![]()
)
Как вариант для сайтов-визиток можно даже не к папке привязываться, а к домену (благо, полсотни файлов в корне домена второго уровня - норма).
Спасибо ещё раз!
Нет, от работы точно надо отдыхать - а то в какой-то момент мозги кипят...