2013-09-25 2 views
0

1)

У меня есть это:

function ObtainRequest($Field, $Method) { 
    $Returned = ""; 
    if ($Method == "POST") 
    $Returned = $_POST[$Field]; 
    else if ($Method == "GET") 
    $Returned = $_GET[$Field]; 
    else 
    $Returned = $_REQUEST[$Field]; 
return $Returned; 
} 

Теперь, используя функцию:

if (isset(ObtainRequest("OneField","POST"))) { 
    DoSomething(); 
} else if (!isset(ObtainRequest("OneField","POST"))) { 
    DoOtherthing(); 
} 

Но мой сценарий не работает (ПОКАЗЫВАЮЩАЯ ПЛАН СТРАНИЦА) ...

Какая у меня ошибка?

2)

The $_REQUEST теряется внутри функции?

Этот код работает !!:

 if (isset($_REQUEST["OneField"])) { 
     DoSomething(); 
     } 

Этот код не работает !!:

 if (isset(ObtainRequest("OneField","REQUEST"))) { 
     DoSomething(); 
     } 

Этот код не работает !!:

 if (empty(ObtainRequest("OneField","REQUEST"))) { 
     DoSomething(); 
     } 

3)

Является ли он применимым к сеансу?

+0

я исправить мой вопрос, если $ поле равно "Получить" или "Post" возвращение должно быть $ _REQUEST [] .. . – Anita

+0

Примечание для обновлений. – BlitZ

+0

'empty (ObtainRequest (« OneField »,« REQUEST »))' failing, потому что 'empty()' и 'isset()' не могут использоваться с выражениями. Они могут использоваться только с переменными. Вот почему 'isset ($ _ REQUEST [" OneField "])' работает правильно. – BlitZ

ответ

1

Я предпочитаю использовать NULL, потому что указывает на отсутствие или отсутствие данных.

function ObtainRequest($Field, $Method) { 
    $Method = strtoupper($Method); 
    if ($Method == "POST") 
    return = isset($_POST[$Field]) ? $_POST[$Field] : NULL; 
    else if ($Method == "GET") 
    return = isset($_GET[$Field]) ? $_GET[$Field] : NULL; 
    else 
    return isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : NULL; 
} 

Теперь вы можете использовать этот метод:

if (ObtainRequest("OneField","POST") != NULL) { 
    DoSomething(); 
} else if (ObtainRequest("OneField","POST") == NULL) { 
    DoOtherthing(); 
} 
0

Первая проблема, которую я вижу, что вы используете пост вместо POST ...

да, вы можете сделать это с помощью сеансов тоже, но коды должны быть изменены немного ..

1

Ваш ошибка здесь:

$Method == "Post" 

Но вы попутно в верхнем регистре POST:

ObtainRequest("OneField","POST") 

Фикс с strtoupper():

function ObtainRequest($Field, $Method) { 
    $Returned = ""; 
    $Method = strtoupper($Method); 
    if ($Method == "POST") 
    $Returned = isset($_POST[$Field]) ? $_POST[$Field] : false; 
    else if ($Method == "GET") 
    $Returned = isset($_GET[$Field]) ? $_GET[$Field] : false; 
    else 
    $Returned = isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : false; 
    return $Returned; 
} 

Кроме того, эта функция может быть сокращен с switch строительства:

function ObtainRequest($Field, $Method) { 
    switch(strtoupper($Method)){ 
     case "POST": return isset($_POST[$Field]) ? $_POST[$Field] : false; 
     case "GET": return isset($_GET[$Field]) ? $_GET[$Field] : false; 
     default: return isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : false; 
    } 
} 

Вторая проблема заключается в том, что isset() может быть использован с переменных, , но не с функцией. Используйте булеву проверку вместо:

if (ObtainRequest("OneField","POST") !== false) { 
    DoSomething(); 
} else if (ObtainRequest("OneField","POST") === false) { 
    DoOtherthing(); 
} 

ли применимо к сессии тоже?

Ну, если вы заинтересованы, на мой взгляд: Я бы не смеси$_SESSIONв такой функции с $_POST, $_GET и $_REQUEST, потому $_SESSION сек значение отличается. Кроме того, он существует по-разному, а не как он.

Однако, что-то вроде этой функции может быть реализовано для $_SESSION.

Смежные вопросы