Jump to content
  • 0

Использование метода GET


romero
 Share

Question

Добрый день!

Есть некий вопрос. Мне необходимо написать динамическую ссылку - т.е.с использованием метода GET. Как передавать методом GET переменные - я знаю - пример — index.php?имя_переменной=значение&имя_переменной2=значение2

Вот..а если нкобходимо, например передать команду - например команду включения файла в сценарий -- include("file.php"); -- как это реализовать?

Зачем это нужно? В общем - мне необходимо из одного сценария вызывать различные страницы - поскольку в этом сценарии находятся обработчики, а в вызываемых файлах - данные. Т.е.мне попросту нужно включить в главный сценарий(например INDEX.PHP) данные из другого сценария командой INCLUDE(''FILE.PHP");

Попробую привести код, для обьяснения:

INDEX.PHP:

<?php

$var1="какое-то значение";

$var2="какое-то значение"

include(''file.php''); - ####мне необходимо чтобы имя файла менялось в зависимости от того какой файл выберет пользователь.###

?>

Вот я и хочу реализовать следующий принцип - пользователь жмет на сылку типа index.php?include('file.php'); - в результате чего обработчику INDEX.PHP передается на включение файл FILE.PHP

Кто может помочь составить правильную динамическую ссылку?

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

Заранее всем очень благодарен..

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

эм.. если я правильно вас понял то сейчас попытаюсь объяснить как это можно реализовать.

есть ссылки, допустим вот такие

ФАЙЛ1

ФАЙЛ2

а в index.php пишете следующее.

<?php

$action = $_GET['action'];

include($action.".php");

?>

вроде так. должно работать, не проверял...

Link to comment
Share on other sites

  • 0

Делаете ссылку типа "../index.php?icebars=1"

В index.php:

		if(isset( GET['icebars'] )) {
switch(GET['icebars']) {
case 1: команда 1; break;
case 2: команда 2; break;
case 3: команда 3; break;
default: команда, если ни одно не подошло
};
};

Ну и ссылки делаете соответственно ?icebars=1,2,3 и т.д.

А напрямую включать -- ни в коем случае! Могут свой файл прописать, например, с sql-инъекцией.

Link to comment
Share on other sites

  • 0
эм.. если я правильно вас понял то сейчас попытаюсь объяснить как это можно реализовать.

есть ссылки, допустим вот такие

ФАЙЛ1

ФАЙЛ2

а в index.php пишете следующее.

<?php

$action = $_GET['action'];

include($action.".php");

?>

вроде так. должно работать, не проверял...

Да, вроде, правильно :-) Вопрос такой - ACTION - это какае-то строковая функция в PHP? (Пример index.php?ACTION=file1 )

—————————————--

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

По поводу SQL-иньекций - можна, пожалуйста, немного подробней?

Спасибо.

Link to comment
Share on other sites

  • 0

ACTION это просто имя переменной :( можешь хоть на что ее заменить :D

но IceBars прав... чет я ступил вчера.. представь если вместо index.php?action=file1 я в строку адреса пропишу что-нибудь такое index.php?action=http://www.site.ru/hanavsem короче, в твой код мой файл вставится... а это не айс, так взломать могут твой сайт :) ну или еще что-нибудь плохое с ним сделать))) тут я уже сам мало что понимаю :)

Link to comment
Share on other sites

  • 0
ACTION это просто имя переменной :D можешь хоть на что ее заменить :)

но IceBars прав... чет я ступил вчера.. представь если вместо index.php?action=file1 я в строку адреса пропишу что-нибудь такое index.php?action=http://www.site.ru/hanavsem короче, в твой код мой файл вставится... а это не айс, так взломать могут твой сайт :) ну или еще что-нибудь плохое с ним сделать))) тут я уже сам мало что понимаю :(

Да..внатуре - могут такое учудить.. Но я шо-нить придумаю - защиту какую-нить с исключением адрессов.. Ок - спасибо, что помогли, а то вот 3 дня маялся :-)

Link to comment
Share on other sites

  • 0

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

<?php

$action = $_GET['action'];

include("./pages/".$action.".php");

?>

Link to comment
Share on other sites

  • 0
кстати.. вот как можешь себя обезопасить. создай папку pages (можешь любую другую, только потом в коде измени еще) где будут храниться файлы которые ты будешь инклудить потом, а в коде напиши вот это

<?php

$action = $_GET['action'];

include("./pages/".$action.".php");

?>

Тогда надо, думаю, полный путь прописывать. Ведь никто не мешает создать у себя на хостинге такую же папку :D.

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

Link to comment
Share on other sites

  • 0

хм.. вижу что Вы в этом деле разбираетесь.. поэтому спорить не стану :D но порассуждаю немного и хотелось бы услышать Ваше мнение, щас уже самому интересно, просто всегда сам такую систему использую.

если будут пытаться взломать то пропишут свой файл. это будет примерно так

www.site.ru/index?action=http://hak.ru/file

тогда получиться вот что то вроде такого include("./pages/http://hak.ru/file.php"); разве это будет работать? О_о

помоему нет... и еще.. разве "./" - это не подразумевает что вместо этого укажется корневая папка? т.е. в данном случае www.site.ru?

кстати, нужно еще учесть есть ли запрашиваемый файл или его нет, а если нету то загрузить по умолчанию файл main.php

вот как это можно сделать:

<? 
if (!isset($_GET['action'])) {$_GET['action'] = "main"; }

$name=$_GET['action'];

$file="./pages/".$name.".php";
if (is_readable($file)) {
include($file);
} else {
echo "
Файл не найден
";
}
?>

Link to comment
Share on other sites

  • 0
если будут пытаться взломать то пропишут свой файл. это будет примерно так
www.site.ru/index?action=http://hak.ru/file

тогда получиться вот что то вроде такого include("./pages/http://hak.ru/file.php"); разве это будет работать? О_о

Нет, пропишут www.site.ru/index?action=hak.ru/file :D.

И получится что-то вроде include("../pages/hak.ru/file.php").

помоему нет... и еще.. разве "./" - это не подразумевает что вместо этого укажется корневая папка? т.е. в данном случае www.site.ru?

../ подразумевает, что укажется верхний по отношению к текущему каталог. Лучше полностью путь прописать, такое не обойти :).

кстати, нужно еще учесть есть ли запрашиваемый файл или его нет, а если нету то загрузить по умолчанию файл main.php

По умолчанию емнип не main, а index.

Link to comment
Share on other sites

  • 0
../ подразумевает, что укажется верхний по отношению к текущему каталог.

не "../", а "./"

По умолчанию емнип не main, а index.

а разница?) я имел ввиду не по умолчанию вообще) а по умолчанию именно в моем коде.

Link to comment
Share on other sites

  • 0

Что бы обезопасить сервер от злоумышленника, откажитесь сразу от бредовой идеи.

Не нужно делать никаких "лишних" проверок на корректность адреса, че-то там еще (толком не понял). Сразу стройте грамотный алгоритм вашего скрипта, что бы его не пришлось "лечить" в будущем...

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

http://www.mydoman.ru/index.php?file=function.php а потом в скрипте файл function.php просто инклудился: - Это зло и оно когда нибудь вас погубит.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy