Strict Standards: Resource ID#34 used as offset, casting to integer (34) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Функция include к ссылкам
ТвойWeb » WebMaster класс » HTML » Функция include к ссылкам

Страниц (1): [1]
 

1. CiJey - 09 Мая, 2009 - 18:47:05 - перейти к сообщению
Народ, помогите кто может!
У меня такая беда.. Я хочу изменить отоброжение адреса сайта, то-есть: чтобы место обычного 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! Файл не найден!"; } //Выводим сообщение об ошибке
?>


Я прав?
Если да, то почему не работает? Хотябы ошыбку выбевал.. а так жмеш на ссылку, он ее меняет, а оформление остоется прежним..

на первом сайте у меня получилось, тока я его стер с виндой.. а тут не хочет. Может я чтото упустил, или не так сделал? Помогите пжлсто!!
2. funnyman - 09 Мая, 2009 - 23:23:53 - перейти к сообщению
По-моему вот так нада:

CODE:
include("page.html");


без знака "$"
3. Furax - 10 Мая, 2009 - 00:05:35 - перейти к сообщению
Знак бакса нужен, однако это будет работать не всегда: если отключена опция 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! Файл не найден!"; } //Выводим сообщение об ошибке
?>
Обрати внимание на кавычки внутри квадратных скобок: у меня нет ошибки, они ставятся, если вокруг нет других кавычек (двойных).
4. CiJey - 10 Мая, 2009 - 04:16:41 - перейти к сообщению
Я вставил код каторый вы мне посоветовали, но у меня таже беда.. Допустим у меня открыто страница news (home.php?page=news), я хочу перети напремер в контакты. Жму на ссылку он ее меняет на (home.php?page=contact), НО! Страница остается новостей.. То-есть адрес меняется а страница нет..
5. Furax - 10 Мая, 2009 - 04:44:43 - перейти к сообщению
CiJey
Пожалуйста, приведи полный код страниц home.php, news.html и contact.html. И сразу: какой хостинг?
6. CiJey - 10 Мая, 2009 - 04:56:59 - перейти к сообщению
Я его пока на хост не закинул, потаму что я его до конца не доделал.. но в прошлый раз, у мну все работала..

а выгледит это примерно так:

Я в home.php вставляю выше указаный код. Патом делаю ссылки в меню таким оброзом
CODE:
<a href='home.php?page=rus/news'>
<a href='home.php?page=rus/contact'>
<a href='home.php?page=rus/download'>


То-есть home.php у меня находется в корневой папке там же, где и все рисунки для дизайне.. но так как страница на нескольких языках надо их разделить, чтоб самаму не путатся..

Осталние: новости, контакты, загрузки лижат в папке rus/ а когда на них жмеш, то палучается то что я говорил..
7. CiJey - 10 Мая, 2009 - 05:50:11 - перейти к сообщению
Вот ссылка на сайт.. такая вот фигня ща получается: Неверно указана страница

http://87.99.66.222/
8. Furax - 10 Мая, 2009 - 05:52:13 - перейти к сообщению
Код страниц, пожалуйста.
9. CiJey - 10 Мая, 2009 - 05:58:07 - перейти к сообщению
CODE:
<meta http-equiv="content-type" content="text/html; charset=windows-1251">


Сори если я чтото не так делаю, задаю глупие вапросы, или не до понимаю..
Я в этом деле начинающий.

http://87.99.66.222/home2.php
Тут без инклуд функции, если что..
10. CiJey - 10 Мая, 2009 - 07:26:24 - перейти к сообщению
Все разобрался! Огромное спосибо за помощ.. Можно закрывать тему.
Еше раз спосибо

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0333]     [ Gzipped ]