Forum Webscript.Ru
Программирование => PHP => Тема начата: от 21 Марта 2001, 01:41:12
-
Hi,
Возник срочный вопрос к специалистам языка PHP или JavaScript.
У меня есть шаблон с шапкой, меню и т.д. в файле "blank.phtml", в него скриптом
function foo ($in) {
if ($in != "") {$out=$in;}
else {$out="indekc.htm";} return $out;}?>
вставляется текст из разных *.HTM файлов. Получается все ОК.
Но если открыть *.HTM файл сам по себе (например на него дала ссылку поисковая система) он открывается без меню и шапки, так вот можно ли сделать скрипт (не забывая, что файлы HTM, теоретически можно переименовать в PHP, но не удобно это), что при открытии *.HTM файла открывался бы не он, а хотя бы "index.shtml", конечно желательнее, что бы присоединялся файл "blank.phtml + имя.htm".
Заранее благодарен, Андрей. santy@chat.ru
-
А ты поставь во все HTM файлики редирект на твой скрипт.
-
lodevar (21-03-2001 13:26):
А ты поставь во все HTM файлики редирект на твой скрипт.
Не получается.
Этот скрипт написан в шаблоне blank.php и при нажатии ссылки blank.php?имя-файла.htm вставляет в шаблон blank.php файл имя-файла.htm, а если там редирект то он производится до бесконечности.
-
Сделай проверку - если из скрипта загружается html, то Ок, иначе - редирект.
-
lodevar (22-03-2001 10:15):
Сделай проверку - если из скрипта загружается html, то Ок, иначе - редирект.
Кх... Легко сказать... Я и задаю вопрос, что бы мне помогли в написании скрипта, сам-то я вроде как смахиваю на чайника, в РНР во всяком случае :-)
-
Да ладно тебе прибедняться! :-)
Смотри http://php.net/manual/en/language.variables.predefined.php
там говорится о переменной HTTP_REFERER.
Пишешь, например, так:
if($HTTP_REFERER=="путь_к_моему_скрипту")
{
print "ура! меня запустил мой скрипт!";
}
else
{
print "Уйди от меня злобный хакер!";
}
Успехов!
-
Конечно надо проверять HTTP_REFERER! Есть у меня один примерчик, писаный правда для коррекции показаний счетчика... но шапку так тоже можно вставлять. Зайди http://dmytro.dax.ru/index.phtml?link=9
Кстати там тоже так все сделано - шапка хранится в одном файле но ты можешь значение link как угодно менять а ее ты увидишь.
-
не надо делать файлы с html для инклуда с расширение htm. делай какие нибудь .inc .dat тогда поисковики их трогать не будут. или пропиши robots.txt
и в переменных, передаваемых через ENV очень опасно передавать имя файла и расширение целицом для инклуда.
-
Интересно пишешь о опасности, но не понятно.
Можно подробней, почему нельзя передавать имя файла?
-
Denim (16-04-2001 20:19):
Интересно пишешь о опасности, но не понятно.
Можно подробней, почему нельзя передавать имя файла?
blank.php?имя-файла.htm - при таком раскладе можно будет проинклудить любой файл, находящийся в public_html, а если на сервере где ты хостишься вообще никто не думал о безопасности, то вообще любой файл с этого сервера.
-
А как они узнают имя файла?
И можно ли залезть в директорию cgi-bin?
AliMamed (17-04-2001 10:42):
Denim (16-04-2001 20:19):
Интересно пишешь о опасности, но не понятно.
Можно подробней, почему нельзя передавать имя файла?
blank.php?имя-файла.htm - при таком раскладе можно будет проинклудить любой файл, находящийся в public_html, а если на сервере где ты хостишься вообще никто не думал о безопасности, то вообще любой файл с этого сервера.
-
Да не надо предавать файл как параметр, передай какую-то переменную а потом по ней инклудь файл. Сам так делал
http://dmytro.dax.ru/index.phtml
-
тогда придется забивать все переменные - это не очень удобно. проще имхо делать так:
вызывается скажем
www.you.ru/index.phtml?open=document
для открытия соответственно файла /home/user/public_html/document.txt
а в index.phtml выполняется такой код:
include("/home/user/public_html/".$open.".txt");
-
AliMamed (20-04-2001 10:41):
тогда придется забивать все переменные - это не очень удобно. проще имхо делать так:
вызывается скажем
www.you.ru/index.phtml?open=document
для открытия соответственно файла /home/user/public_html/document.txt
а в index.phtml выполняется такой код:
include("/home/user/public_html/".$open.".txt");
Так фищка в том, что юзер не знает названий файлов, т.е. не могет сам взять и откріть в браузере document.txt бкзо всех твоих шапок, хотя конечно при большом количестве страниц уследить за переменными тяжело.
-
"так фишка как раз в том", что blank.php?/etc/passw в ентом случае то и может получится =)