[php] $ _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()잘 될뿐만 아니라 수 있습니다.


답변

  • 이 경우 사용 방법 isset이 적절하지 않습니다.

PHP 문서에 따르면 : http://php.net/manual/en/function.array-key-exists.php
(예제 # 2 array_key_exists () vs isset () 참조 )
방법array_key_exists 는 배열의 키 존재를 확인하기위한 것입니다.

따라서 질문의 코드는 다음과 같이 변경 될 수 있습니다.

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

$newString = fromPerson();

  • 4.1.0 버전부터 PHP 환경 전역 변수이기 때문에 $ _POST 배열의 존재 여부를 확인할 필요가 없습니다 (현재는 이전 버전의 PHP를 지원하지 않습니다).