|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
$_RQUEST ?!?
|
|
Автор | Unit-731 (Нерегистриран) |
Публикувано | 15.11.04 13:21 |
|
Въпроса ми е следният : "Има ли смисъл да използвам $_POST и $_GET в скриптовете, които съзадавам, при положение, че имам на разположение $_REQUEST. T.e. има ли смисъл да си правя целия скрипт да ползва само един метод ? Сигурност, портативност... незнам... вие кажете.
| |
Тема
|
Re: $_RQUEST ?!?
[re: Unit-731]
|
|
Автор |
Bълk (по-нов и по-лош) |
Публикувано | 15.11.04 13:26 |
|
с пост или гет можеш да разделиш начина на получаване на параметри в скрипта. Например когато имаш "гет ид" ще ти се изпълнява една част от скрипта а при "пост ид" ще е другата.
| |
|
Според мен, използването на $_REQUEST е пробив в сигурността на твоя скрипт. Ако използваш $_REQUEST ти абсолютно елиминираш директивата
register_globals = Off
| |
Тема
|
Re: $_RQUEST ?!?
[re: Bълk]
|
|
Автор | Unit-731 (Нерегистриран) |
Публикувано | 15.11.04 14:42 |
|
Би ли ми дал някакъв кратък практически пример, когато би ми се наложило да използвам това разделяне?
Аз все още не съм схванал напълно и разликата между двата метода (кой при какви условия е подходящ), освен, че единия праща в хедъра, а другия в урл-то.
| |
Тема
|
в общи линии е нещо от рода
[re: Unit-731]
|
|
Автор |
Bълk (по-нов и по-лош) |
Публикувано | 15.11.04 14:53 |
|
if(isset($_GET['action'])):
switch($_GET['action']):
case "delete":
if(!isset($_GET['id'])): header("location:".$_SERVER['PHP_SELF']);exit; endif;
// delete operation dependecies display for an operation confirmation
// display of the form with hidden field 'action=delete' and hidden field 'id=$_GET['id']'
break;
endswitch;
elseif(isset($_POST['action'])):
switch($_POST['action']):
case "delete":
if(!isset($_POST['id'])): header("location:".$_SERVER['PHP_SELF']); exit; endif;
mysql_query("DELETE FROM sometable WHERE something='".$_POST['id']."'")
break;
endswitch;
else:
// full list with action link
endif;
| |
|
ами не си прав!! (само да спомена аз много рядко ползва _POST и _GET ... само когато ми се налага ;-))
не е същото като с директивата register_globals = Off
защото там основно се предпазваш от нещо като
if ($username == 'ceco') { $login = true; }
if ($login) { echo 'you are logged';}
а тук ще се предпазиш пак защото кода ще е
if ($_REQUEST['username'] == 'ceco') { $login = true; }
if ($login) { echo 'you are logged';}
т.е. пак си се предпазил някой да направи http://xxxxxxx/test.php?login=1
т.е. за никакво елиминиране не става дума
| |
Тема
|
Re: $_RQUEST ?!?
[re: phpGuru]
|
|
Автор | Unit-731 (Нерегистриран) |
Публикувано | 15.11.04 17:13 |
|
E, ако страницата ти test.php съдържа кода:
if ($username == 'ceco') { $login = true; }
if ($login) { echo 'you are logged';}
не виждам как се предпазваш по този начин от http://xxxx/test.php?login=1
T.e. oсвен със сесии, друг начин не виждам.
| |
|
примера е елементарен, дори не е пример за подръжка
идеата на $_REQUEST, $_GET, $_POST когато опцията в php.ini
register_globals = Off
е, че няма да имаш никоя обикновенна променлива неинициализирана (защото не си обърнал внимание или забравил) да бъде инициализирана през URL
т.е. варианта който си копирал без $_REQUEST е принципно опасен
а другият не ..... (примера е супер елементарен важен е принципа ;-))
| |
|
а по върпоса дали $_REQUEST или $_POST/$_GET
аз ползвам предимно $_REQUEST (щото по-лесно ;-)) освен в някои случаи, когато се налага да знаеш дали е по $_GET или $_POST, но тва е рядкост
| |
Тема
|
Re: $_RQUEST ?!?
[re: phpGuru]
|
|
Автор |
$burov (начинаещ) |
Публикувано | 15.11.04 22:24 |
|
Здрасти Гуру,
признавам си че писах наизуст и след твоите постинги взех че попрочетох това онова от мануала. Стигнах до извода, че вариантите са два, според стойността на register_globals
1. Ако register_globals = Off - ти си прав, в общия случай.
2. Ако register_globals = On стигнах до:
If the register_globals directive is set, then these variables will also be made available in the global scope of the script; i.e., separate from the $_REQUEST array.
.....
If you don't care where the request data comes from, you can use $_REQUEST as it contains a mix of GET, POST and COOKIE data.
.....
Of course, simply turning off register_globals does not mean your code is secure.
което ще рече, че при включени register_globals, най-добре забрави за $_REQUEST, а по-добре е да се проверява от къде идва променливата, от кой глобален масив. Лично мое мнение. Дали ще използваш $_GET, $_POST или само $_REQUEST зависи все пак и от нивото на защита, което се изисква от съответното приложение.
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|