programing

$ _POST 존재 여부 확인

nasanasas 2020. 9. 4. 07:31
반응형

$ _POST 존재 여부 확인


$ _POST가 있는지 확인하고있는 경우 다른 문자열 안에 인쇄하고 그렇지 않은 경우 전혀 인쇄하지 않습니다.

이 같은:

$fromPerson = '+from%3A'.$_POST['fromPerson'];

function fromPerson() {
    if !($_POST['fromPerson']) {
        print ''
    } else {
        print $fromPerson
    };
}

$newString = fromPerson();

어떤 도움이라도 좋을 것입니다!


if( isset($_POST['fromPerson']) )
{
     $fromPerson = '+from%3A'.$_POST['fromPerson'];
     echo $fromPerson;
}

단순한. 두 가지 선택이 있습니다.

1. 게시물 데이터가 전혀 없는지 확인

//Note: This resolves as true even if all $_POST values are empty strings
if (!empty($_POST))
{
    // handle post data
    $fromPerson = '+from%3A'.$_POST['fromPerson'];
    echo $fromPerson;
}

(또는)

2. 게시 데이터에서 특정 키를 사용할 수 있는지 확인하십시오.

if (isset($_POST['fromPerson']) )
{
    $fromPerson = '+from%3A'.$_POST['fromPerson'];
    echo $fromPerson;
}

모두가 isset ()을 사용하라고 말하고 있습니다-아마도 당신에게 도움이 될 것입니다.

그러나 다음의 차이점을 이해하는 것이 중요합니다.

$_POST['x'] = NULL;$_POST['x'] = '';

isset($_POST['x'])반환 false첫 번째 예제에서,하지만 돌아갑니다 true당신은 둘 중 하나를 인쇄하려고하면, 모두가 빈 값을 반환에도 불구하고 두 번째에.

당신이 경우 $_POST비워을 사용자가 입력 필드 / 양식에서오고입니다, 나는 NULL을 "(나는이 생각에 100 % 확신하지 않다) 값이 될 것이라고 믿는다"하지만.

그 가정이 틀린 경우에도 (내가 틀렸다면 누군가 나를 고쳐주세요!) 위의 내용은 향후 사용을 위해 알아두면 좋습니다.


놀랍게도 언급되지 않았습니다.

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){

isset($_POST['fromPerson']) 

배열 키가 있는지 확인하는 올바른 방법은 기능입니다. array_key_exists()

차이점은 $_POST['variable'] = null키가 존재하고 전송되었지만 값이 null이라는 것을 의미합니다.

다른 옵션은 isset()어레이 키가 있는지, 설정되었는지 확인하는 것입니다.

마지막 옵션 empty()은가 설정되어 있고 값이 비어 있지 않은 경우 배열 키가 있는지 확인 하는 사용 입니다.

예 :

$arr = [
  'a' => null,
  'b' => '',
  'c' => 1
];

array_key_exists('a', $arr); // true
isset($arr['a']); // false
empty($arr['a']); // true


array_key_exists('b', $arr); // true
isset($arr['b']); // true
empty($arr['b']); // true


array_key_exists('c', $arr); // true
isset($arr['c']); // true
empty($arr['c']); // false

귀하의 질문에 대해

값이 전송되었는지 확인하는 올바른 방법은 요청 메서드 확인과 함께 array_key_exists ()를 사용하는 것입니다.

if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)    
{
   // logic
}

그러나 어떤 경우에는 당신의 논리에 따라 달라집니다 곳이 있습니다 isset()empty()잘 될뿐만 아니라 수 있습니다.


  • In that case using method isset is not appropriate.

According to PHP documentation: http://php.net/manual/en/function.array-key-exists.php
(see Example #2 array_key_exists() vs isset())
The method array_key_exists is intended for checking key presence in array.

So code in the question could be changed as follow:

function fromPerson() {
   if (array_key_exists('fromPerson', $_POST) == FALSE) {
        return '';
   } else {
        return '+from%3A'.$_POST['fromPerson'];
   };
}

$newString = fromPerson();


  • Checking presence of array $_POST is not necessary because it is PHP environment global variable since version 4.1.0 (nowadays we does not meet older versions of PHP).

All the methods are actually discouraged, it's a warning in Netbeans 7.4 and it surely is a good practice not to access superglobal variables directly, use a filter instead

$fromPerson = filter_input(INPUT_POST, 'fromPerson', FILTER_DEFAULT);
if($fromPerson === NULL) { /*$fromPerson is not present*/ }
else{ /*present*/ }
var_dump($fromPerson);exit(0);

Try

if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") {
    echo "Cool";
}

Try isset($_POST['fromPerson'])?


if (is_array($_POST) && array_key_exists('fromPerson', $_POST)) {
    echo 'blah' . $_POST['fromPerson'];
}

if( isset($_POST['fromPerson']) ) is right.

You can use a function and return, better then directing echo.


I like to check if it isset and if it's empty in a ternary operator.

// POST variable check
$userID  = (isset( $_POST['userID'] )    && !empty( $_POST['userID'] ))   ? $_POST['userID']   :  null;
$line    = (isset( $_POST['line'] )      && !empty( $_POST['line'] ))     ? $_POST['line']     :  null;
$message = (isset( $_POST['message'] )   && !empty( $_POST['message'] ))  ? $_POST['message']  :  null;
$source  = (isset( $_POST['source'] )    && !empty( $_POST['source'] ))   ? $_POST['source']   :  null;
$version = (isset( $_POST['version'] )   && !empty( $_POST['version'] ))  ? $_POST['version']  :  null;
$release = (isset( $_POST['release'] )   && !empty( $_POST['release'] ))  ? $_POST['release']  :  null;

참고URL : https://stackoverflow.com/questions/3496971/check-if-post-exists

반응형