Вернуться   Нижегородский Форум Друзей > Обсуждаем и качаем > Софт > Языки и программирование
Забыли пароль? Регистрация




Ответ
 
Опции темы Опции просмотра
Старый 28.06.2007, 16:07   #21
Дружище
 
Аватар для Tretyak
 
Регистрация: 25.09.2006
Адрес: Мещера Сити.
Пол: М
Провайдер: АДС FTTB
Сообщений: 767
Поблагодарил: 189
Поблагодарили 245 раз в 117 сообщениях
Открыли хайд :
0 в этом сообщении
5 Всего


По умолчанию

Вот так вот получилось:

<?php

// проверяем, есть ли вообще в массиве $_GET элемент "page"

if ( isset ( $_GET [ "page" ] ))
{
$filename = escapeshellcmd ( $_GET [ "page" ] ); // получаем имя файла, попутно избавляемся от

спец-символов

//добавим расширение к имени файла
$filename .= ".php";
// проверяем существование файла, который надо подключить

if ( is_file ( $filename ))
{
// подключаем нужный файл
include ( $filename );
}
else
{
// выводим сообщение, что файла такого нет
print "Страница не найдена";
}
}
else // если в $_GET ничего не передается
{ //то выводим html форму
$string ='
<form action="" method="get" onchange="submit()">
<select name="page">
<option value="lekcii">Лекции</option>
<option value="knigi">Книги</option>
<input type="submit" value="ok">

</select>
</form>
';
print $string;
}
?>

Но здесь-то форма выводится, а мне ссылки надо типа как в меню на [Для просмотра данной ссылки нужно зарегистрироваться]. Вообще смысл этой фигни такой: у меня есть слой, куда я подключаю инклудом <?php include("$page");?>, в результате верстка страницы остается на месте, а в нужный слой выводится содержимое другой страницы. Вот в том примере, что я писал в самом начале, все работает, но не проинициализирована сама $page.
__________________
http://forum.friends.nnov.ru/image.php?type=sigpic&userid=1154&dateline=1228731041
Tretyak вне форума  
Ответить с цитированием
Старый 28.06.2007, 16:58   #22
Приятель
 
Аватар для dimazzz
 
Регистрация: 31.10.2006
Адрес: Нижний Новгород
Пол: М
Провайдер: ВТ
Сообщений: 186
Поблагодарил: 202
Поблагодарили 117 раз в 49 сообщениях
Открыли хайд :
0 в этом сообщении
13 Всего


По умолчанию

замени вот это
[php]
<form action="" method="get" onchange="submit()">
<select name="page">
<option value="lekcii">Лекции</option>
<option value="knigi">Книги</option>
<input type="submit" value="ok">

</select>
</form>
[/php]

вот этим

[php]
<ul style="list-style:none;">
<li><a href="?page=knigi">Книги</a></li>
<li><a href="?page=lekcii">Лекции</a></li>
</ul>
[/php]

а вместо переменной $page
была использована переменная $filename

просто замени в своем include имя переменной на $filename
или наоборот в нашем примере замени все $filename на $page
dimazzz вне форума  
Ответить с цитированием
Старый 10.07.2007, 02:48   #23
Приятель
 
Регистрация: 05.04.2007
Адрес: xermit.blogspot.com
Пол: M
Провайдер: АДС FTTB
Сообщений: 245
Поблагодарил: 39
Поблагодарили 18 раз в 12 сообщениях
Открыли хайд :
0 в этом сообщении
0 Всего


По умолчанию

Думается для такой задачи подходит решение статичного html + javascript, но никак не php, зачем дублировать то, что и так делается сервером в купе c html, http. Если бы там связь между ними, запрашиваемыми файлами была какая нить магическая, я бы еще понял, а то ведь то, что передали то и включить в php код, а по сути это запрос с параметром влияющим на бизнес логику. Если результат стат. страница,то так делать не надо,если результат параметра запуск супер пуперскрипта скачивания даннных из пентагона, тоже не понятно,почему сразу не вызвать такой скрипт, а обязательно включать его выполнение в другой (понял если бы там хитрая авторизация двухуровневая была для доступа к таким скриптам спецсотрудников прошедшихдвойную страничную проверку). Что называется из мухи раздуваем слона, про скорость доступа к таким страницам я вообще умолчу. Если хочется язык попробовать,то лучше взять задачу позагагулистее, или вообще решить ее другим путем.

Как то в свое время я даже думал что лучше на php генерить готовые страницы и хранить их в файловой системе, потом правда появидись php акселераторы, которые по сути как бы это и делали, хранили скомпиленные php скрипты, но они все равно выполнялись, а потом появились http proxy на стороне web сервера.

Поэтому не надо делать динамику там где ее необходимо исключить.
Xermit вне форума  
Ответить с цитированием
Старый 10.07.2007, 09:40   #24
Приятель
 
Аватар для dimazzz
 
Регистрация: 31.10.2006
Адрес: Нижний Новгород
Пол: М
Провайдер: ВТ
Сообщений: 186
Поблагодарил: 202
Поблагодарили 117 раз в 49 сообщениях
Открыли хайд :
0 в этом сообщении
13 Всего


По умолчанию

Цитата:
Сообщение от Xermit Посмотреть сообщение
Думается для такой задачи подходит решение статичного html + javascript, но никак не php............

Поэтому не надо делать динамику там где ее необходимо исключить.
И не лень вот было писать весь этот малоотносящийся к теме текст.
Согласен, что нецелесообразно передавать имя статической страницы скрипту на php для того, чтобы он ее включил. И для решения данной задачи достаточно было бы использовать чисто статический html без участия даже javascript не говоря уже о php.
Но в данном случае тема была заведена не для того, чтобы применять приводящиеся здесь решения в каких-то суперглобальных проектах, а для того, чтобы человек, который завел тему, разобрался с передачей запросов get, обработкой их на стороне сервера и выводом результатов клиенту.

Если тебя душит то, для каких простых и, казалось бы, бессмысленных целей используется здесь php, то приведи свой пример решения с использованием html и javascript (хотя я вообще не представляю зачем тут может понадобится javascript - все решается банально с ипользованием голого html),

Smartboy: Сокращай цитаты, тем более она на пост выше!

Последний раз редактировалось Smartboy; 10.07.2007 в 10:08.
dimazzz вне форума  
Ответить с цитированием
Этот пользователь сказал Спасибо dimazzz за это полезное сообщение:
Xermit (10.07.2007)
Старый 10.07.2007, 11:51   #25
Дружище
 
Аватар для Tretyak
 
Регистрация: 25.09.2006
Адрес: Мещера Сити.
Пол: М
Провайдер: АДС FTTB
Сообщений: 767
Поблагодарил: 189
Поблагодарили 245 раз в 117 сообщениях
Открыли хайд :
0 в этом сообщении
5 Всего


По умолчанию

Тааааак, а каким макаром это можно сделать только с помощью html?

То Xermit. А почему тогда такие вещи используются на многих сайтах, или мне кажется? И разве не целесообразно делать только одну страницу и загружать туда разное содержимое?
__________________
http://forum.friends.nnov.ru/image.php?type=sigpic&userid=1154&dateline=1228731041
Tretyak вне форума  
Ответить с цитированием
Старый 10.07.2007, 11:55   #26
Приятель
 
Регистрация: 05.04.2007
Адрес: xermit.blogspot.com
Пол: M
Провайдер: АДС FTTB
Сообщений: 245
Поблагодарил: 39
Поблагодарили 18 раз в 12 сообщениях
Открыли хайд :
0 в этом сообщении
0 Всего


По умолчанию

Да, увлекся, забыл про title.

include можно делать сколько угодно, но на php целесообразнее применять например Smarty, где создается шаблоны html страниц и в нужное место вставлются данные.

Напрямую передавать название файла в скрипт не стоит, хотя бы потому, что поломать могут и то, что нарушается актуальность данных.
То есть на страничке прописан выпадающих список с файлами, пусть даже прямо в статическом html. И может быть так, что такого файла в файловой системе не будет, реорганизация или еще что. Будет потом на страничке удручающая надпись не удалось там выполнить операцию include, ладно хоть к примеру не require. Конечно в коде можно проверку вставить существования файла, но пользователь рассудит, типа что за ....(опустим матерную брань) поставил ссылку на не существующий файл, пускай даже ошибки не возникло, но файл то не открылся, хотя ссылка имеется.

Лучше меню сгенерить по наличию файлов в определенном каталоге, чтобы не было ссылок на не существующие файлы. А ссылки создавать в коде html прямо на эти файлы в том каталоге, чтобы когда их выбирают из списка они грузились напрямую, а не через скрипт php. При этом вот как раз такое меню надо include-ить в такие файлы, а не на оборот, то есть меню включать в код загружаемой страницы, а не код загружаемой страницы в меню по запросу пользователя, название скрипта отображающее меню сайта жестко забивается прямо в коде загружаемой
страницы. Тут я немножко передернул, главное понять что код страницы обычной надо создавать по шаблону, а в самом шаблоне вставлены скрипты php в тех местах где действительно это требуется, например генерировать меню, а не наоборот писать один скрипт, который в зависимости от параметров включает в себя нужную страницу и выдает результат, на сайтах с большой загрузкой такой код просто ляжет.

Пусть к примеру, есть страница rasdel/news.php
когда грузится головная страница, которая называется /home.php, то там содержится обычный html код первой страницы сайта
и в каком-то месте require(menu.php); скрипт menu.php сгенерит тебе
меню с разделом news и это меню будет включено на первой странице сайта, ссылка будет ссылаться на файл [Для просмотра данной ссылки нужно зарегистрироваться] напрямую. а в news.php также содержится код require(../menu.php);
по какому принципу будет menu.php генерит код уже дело десятое, там может быть даже статическое menu на html созданное, а может как я писал сгенерить описание разделов и ссылок на сайте по наличию каталогов и файлов в определенном подкаталоге, но надо учитывать что операция эта медленная, кроме того menu.php может генерировать разные типы меню к примеру для разных страниц если передашь какие нить дополнительные параметры перед включением и выполнением menu.php.

Потом, прочитав посты я так и не понял что значит врезать в момент верстки. Загрузить в слой. Где это происходит?
Даже в статическом HTML можно врезать слой (div,layer, iframe) и вставить ссылку на нужную страницу и даже в динамике без перезагрузки страницы загрузить в такой слой новый файл.

Если речь идет допустим, о том, что сайт есть набор прямоугольников, каждый из которых может быть включен или выключен, то да, возможно php надо применить, но даже в этом случае можно это сделать через javascript+cookie и свойство css hide, тупо запихнуть все прямоугольники на одну страницу а потом показывать по событию или загружать в iframe в динамике что хочется. Баннеры это уже все прошли. Тот же AJAX использовать, хотя имя собирательное.

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

Сайт я тот глянул но так и не понял. Кроме того на том сайте в меню ссылка вида [Для просмотра данной ссылки нужно зарегистрироваться] может обрабатываться самим web сервером, допустим в Apache стоит плагин mod_rewrite([Для просмотра данной ссылки нужно зарегистрироваться], который переписыает такой запрос к примеру на запрос вида [Для просмотра данной ссылки нужно зарегистрироваться]
и открывает соответствующую статическую страницу.
То, что на том сайте есть, возможно делается статической версткой страницы и модулем mod_rewrite.

Допустим тебе хочется чтобы было некое автоматизированное меню сайта.
Чтобы создав каталог в файловой системе, в меню появлялся новый раздел, а создав файл в таком каталоге появлялась ссылка на него в этом разделе и при ее выборе в основное окно загружался текст выбранной страницы.
Пусть загружается основная страница с меню, а в слой или фрейм броузер загрузит нужную страницу выбранную в меню. Делается это через фрейм даже в статическом html, нужно лишь только у ссылки указать атрибут target куда грузить, например в поименованный фрейм. Если не хочется использовать фрейм, тогда можно попробовать использовать слой.

Или создавать файл, где хранится уникальный индекс разделов, файлов с их местоположением, и на основе него генерить меню, но тогда тоже теряется актуальность.

Сканирование файловой системы для построения меню будет медленным, поэтому необходимо сделать скрипт, который делает снимок фс, только при изменениях в этом каталоге, чтобы каждый раз не тыркать файловую систему при запросе.

Есть один минус. Положив какой-либо секретный файл в такой сканируемый каталог мы автоматически его рассекретим.

Но все это ничем не отличается от статической верстки страниц каким нить редактором и пары скриптов, которые по шаблону перегенерят тебе меню. За одним исключением, если в таком файле хранится еще какая-либо связанная с ним информация, краткая аннотация, которую нужно вывести в разных местах сайта, где бы встречалась ссылка на эту страницу и предполагается, что аннотация часто изменяется.

Smartboy: Учимся пользоваться кнопкой "Правка"

Последний раз редактировалось Xermit; 10.07.2007 в 15:18. Причина: мультипост
Xermit вне форума  
Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Часовой пояс GMT +3, время: 22:56.