|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Переход по страницам на PHP |
|
|
Переход по страницам на PHP
|
Ветеран Сообщения: 637 |
Профиль | Сайт | Отправить PM | Цитировать Привет, недавно начал изучать PHP, и вот пишу сайт.
Имеется главная страница index.php. На ней есть таблица, слева линк $PHP_SELF?action=states, а справа прописано include($inc); В index.php лежит скрипт типа: if ($action == "states"){ $inc="states.php"; } При нажатии все нормально загружается. На states.php у мен лежит линк такого соджержания $PHP_SELF?action=states&st=01 Вопрос: Как сделать чтобы при нажатии на этот линк страница открывалась здесь же. Я пытался сам написать, и вот что вышло: index.php if ($action == "states") { $inc="states.php" if ($st == $st and $st != "") { $inc="states/$st.htm"; } } Все бы ничего, но если ввести неправильно сформированный запрос, то можно читать любые файлы на сервере Вариант с else {$inc="error.htm";} не прокатывает, так как при заходе на states.php вылезает error.htm |
|
------- Отправлено: 13:36, 01-10-2005 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать fossil
я думаю что настоящая проблемма заключается в том что вы не знаете как это все можно организовать с помощью другово метода? |
------- Отправлено: 14:00, 01-10-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 637
|
Профиль | Сайт | Отправить PM | Цитировать Vlad Drakula
Именно так. Ну или возможно как-то переделать этот. Хотя я думал над ним долго.... |
------- Отправлено: 15:04, 01-10-2005 | #3 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать fossil
если вы опишите свою задачу более подробдо, то я скорее всего смогу предложить вам более простой вариант решения. |
------- Отправлено: 15:48, 01-10-2005 | #4 |
Ветеран Сообщения: 637
|
Профиль | Сайт | Отправить PM | Цитировать Первая страница (index.php) является как бы шаблоном. Остальные страницы в меню инклюдиться таким образом include("$inc"); Меню имеет вид $PHP_SELF?action=
В зависимости от линка присваиваются параметры Тут же эти линки обрабатываются и инклюдится нужная страница. Например if ($action == "states"){ $inc="states.php"; } С этим впринципе проблем не возникает. На странице states.php лежат линки с параметрами $PHP_SELF?action=states&st= в переменную st присваивается номер статьи. Все статьи лежат в каталоге states в htm. Така как у меня states.php инклудится, то все линки на states.php следовательно должны обрабатываться в index.php и инклудиться. Например у меня в states.php лежит линк $PHP_SELF?action=states&st=01 Следовательно я дописал в index.php следующие строки: if ($action == "states") { $inc="states.php" if ($st == $st and $st != "") { $inc="states/$st.htm"; } } Получается что когда я жму на линк в инклуженном states.php инклудится статья /states/$st.htm (где $st номер статьи). Вот впринципе и все. Если например сделать запрос http://mysite.ru/index.php?action=st.../etc/passwd%00 нам выведется его содержимое Надо же сделать если ввести что либо другое, то вместо /states/$st.htm инклудилась error.htm, или же как-то сделать подругому запрос. |
|
------- Отправлено: 16:14, 01-10-2005 | #5 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать fossil
Такая система, которую вы создаёте, обычно называется модульной, и states здесь выступает модулем Есть пару вопросов-предложений: Во-первых, почему вы пишете Наверняка у вас будет не только один модуль, а со времен добавяться ещё, тогда может лучше писать так: Можно также проверять, существует ли вообще такой модуль, если нет, то выводим ошибку "такого модуля нет"
Обработка переменной $st должна вообще происходить не в index.php, а в том модуле, к которуму она логически принадлежит, то есть в вашем случае в states. Система здесь действует также: проверяем не пуста ли переменная, если нет, то смотрит, существует ли соответствующий данной переменной файл (то есть статья), если существует, то подключаем, если нет, то выводим надпись с ошибкой. Ещё замечание к модульной системы, если нету переменной action или эта переменная указывает на не существующий модуль, можно подключать стандартный модуль main (или типа того), который будет являться первой страницей сайта |
------- Отправлено: 17:53, 01-10-2005 | #6 |
Ветеран Сообщения: 637
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо большое!
|
------- Отправлено: 19:37, 01-10-2005 | #7 |
Старожил Сообщения: 158
|
Профиль | Отправить PM | Цитировать fossil
еще не плохо бы проверять переменную $st на наличие ../, ./, /root, /etc, и т. д., иначе, конечно получается очень нехорошая штука: Цитата:
|
|
------- Отправлено: 23:34, 01-10-2005 | #8 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать elfoflorien
Цитата:
|
|
------- Отправлено: 10:54, 02-10-2005 | #9 |
Старожил Сообщения: 158
|
Профиль | Отправить PM | Цитировать Vlad Drakula
на счет настроек не знаю (где это настраивается в Linux?), но такое у меня получалось и под Linux, и под Windows |
------- Отправлено: 14:33, 04-10-2005 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - [решено] Как отключить доступ к интернет страницам | ВладимирТ | Microsoft Windows 2000/XP | 2 | 25-11-2008 08:19 | |
[решено] Доступ к сохраненным на компьютере Web страницам | adja | Хочу все знать | 4 | 05-07-2008 20:02 | |
[решено] Apache 2.2.8 + Php 5.2.6 + MySQL 5.0.51b (win) - не работает php | v0f41k | Вебмастеру | 4 | 11-05-2008 22:08 | |
PHP. Как сделать возможность перехода по страницам? | JavaScript | Вебмастеру | 5 | 10-09-2007 13:24 | |
Доступ поисковика к закрытым страницам | ScorpionXXX | Хочу все знать | 5 | 18-06-2006 02:20 |
|