Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Ссылки с параметрами
Форумы портала PHP.SU » » Вопросы новичков » Ссылки с параметрами

Страниц (1): [1]
 

1. Exponat - 22 Октября, 2013 - 16:04:19 - перейти к сообщению
Здравствуйте.
Вот такая ссылка рабочая:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.домен.ру/?action=skyboard

А такая уже не работает:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.домен.ру/?action=skyboard.php?act=cat&cat_id=11


Организация ссылок происходит в главном индексе так:
PHP:
скопировать код в буфер обмена
  1. $action = $_GET['action'];
  2.                 if ($action=="index" or !isset($action))
  3.                 {
  4.                 include "page/index.php";
  5.                 }
  6.                 if (isset($action) and $action != "index")
  7.                 {
  8.                 $page = "page/".$action.".php";
  9.                 if (file_exists($page))
  10.                 {        
  11.                 include "page/".addslashes($action).".php";
  12.                 }
  13.                 else
  14.                 {
  15.                  Такой страницы нет.
  16.                 }
  17.                 }
2. teddy - 22 Октября, 2013 - 16:10:40 - перейти к сообщению
сделай var_dump($action) и посмотри, есть ли у тебя такой файл, очевидно что нет, поэтому и не инклюдится
Exponat пишет:
else {
Такой страницы нет. //где echo/print? Улыбка)
}
3. IllusionMH - 22 Октября, 2013 - 16:13:01 - перейти к сообщению
Exponat, ух, еще б найти способ залить php файл и таким инклюдам цены б не было для злоумышленников.
Вообще, для начала сделайте var_dump($_GET) перед инклюдом и условиями.

skyboard.php - без .php иначе 2 раза будет при поиске итогового файла.
По мере выполнения ставьте echo 'этап' или var_dump($page) чтобы понимать где отваливается код, если не подключаете дебагер
4. Exponat - 22 Октября, 2013 - 16:22:57 - перейти к сообщению
IllusionMH, я извиняюсь на перед..с php я начинающий. Задача у меня встроить доску объявлений в шаблон сайта. Доска есть (skyboard.php в папке page). Сайт самописный. Структуру и идеологию подключение страниц я не создавал....

Подскажите хотя бы пример...
Я о var_dump прочитал но не понял...

Может даже не примеры а скажите для чего оно нужно. И в чем не правильно я там делаю? Злоумышленникам легко добраться до страниц? Проясните пожалуйста.
(Добавление)
Сделал так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.домен.ру/?action=skyboard?act=cat&cat_id=11
но все равно пишет в шаблоне "Такой страницы нет."

skyboard.php существует физически. А cat нету такого файла.
5. IllusionMH - 22 Октября, 2013 - 16:31:17 - перейти к сообщению
Exponat, просто инклюдьте этот файл в месте, где должна быть доска по строгому условию, а не вытягивая имя файла из строки
Не передавайте имена файлов в запросах, а то при наличии способа заливки изображений(без проверки) можно нехило пролететь.

по var_dump написано в документации и тут на сайте.

ну допустим если есть заливка изображений(с недостаточной проверкой) и если постараться, то можно легко передать путь к файлу в экшн и можно выполнять любой код.
6. Exponat - 22 Октября, 2013 - 16:44:11 - перейти к сообщению
Не понимаю.....
У меня главный index.php находится в корне сайта. В нем написано то условие
и тут же инклудится шапка (include/top.php), серединка сайта (page/index.php) и низ сайта (include/footer.php).
Теперь все другие страницы и информация содержатся в файлах дериктории page. Например страница-шаблон для вывода новостей находится в page/news_inf.php. Например полная рабочая ссылка новости выглядит так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.домен.ру/?action=news_inf&id=27033
.
Так как мне эту доску объявлений подключить? Мне кажется не все так просто. Очень много параметров ссылки в файле доски объявления. Это наверное нужно полностью пересматривать код....
7. IllusionMH - 22 Октября, 2013 - 17:05:17 - перейти к сообщению
Exponat, для начала убедитесь что вы можете заинклюдить свой файл(из кода там достаточно WORKS!) в этом файле var_dump($_GET); чтобы увидеть все переданные параметры
8. Exponat - 22 Октября, 2013 - 17:17:09 - перейти к сообщению
При этой ссылке
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.домен.ру/?action=skyboard?act=cat&cat_id=11

var_dump($_GET); выдает:
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(2) { ["action"]=> string(16) "skyboard?act=cat" ["cat_id"]=> string(2) "11" }
9. IllusionMH - 22 Октября, 2013 - 17:19:44 - перейти к сообщению
Exponat, в теперь смотрите где в url ошибка, и как правильно передаются параметры в get запросе
10. Exponat - 22 Октября, 2013 - 17:27:50 - перейти к сообщению
А как тут разобрать где ошибки?
Например при рабочей ссылки
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.домен.ру/?action=news

var_dump($_GET); показывает
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(1) { ["action"]=> string(4) "news" }
Тут тоже ошибки? То есть ссылка нормально работает но есть в ней ошибки?

Извините что достаю так...
11. IllusionMH - 22 Октября, 2013 - 17:38:57 - перейти к сообщению
Exponat, это ж работает, логично что тут нет проблем.
skyboard?act=cat в экшене не смущает, что лишний параметр сюда попал, а не отдельным. ? только в начале запроса должен идти.
12. MAXUS - 22 Октября, 2013 - 22:17:07 - перейти к сообщению
IllusionMH пишет:
Exponat, это ж работает, логично что тут нет проблем.
skyboard?act=cat в экшене не смущает, что лишний параметр сюда попал, а не отдельным. ? только в начале запроса должен идти.


Сдается, это не лишний параметр. По-моему, человек пытается в get-переменную передать url с get-переменными.
13. IllusionMH - 23 Октября, 2013 - 00:49:19 - перейти к сообщению
MAXUS, ну я просто намекал, что то, что должно быть вторым параметром, попадает в первый из-за неправильного символа-разделителя параметров. Нужно делать проверку при создании ссылок или просто внимательно следить и добавлять &
14. Exponat - 23 Октября, 2013 - 11:23:12 - перейти к сообщению
IllusionMH, спасибо, разобрался Улыбка

 

Powered by ExBB FM 1.0 RC1