[php] POST로 전송 된 모든 변수를 가져 오시겠습니까?

게시물과 함께 보낸 모든 변수를 삽입해야합니다. 각 변수는 사용자를 나타내는 확인란이었습니다.

GET을 사용하면 다음과 같은 결과가 나타납니다.

?19=on&25=on&30=on

데이터베이스에 변수를 삽입해야합니다.

POST로 모든 변수를 보내려면 어떻게해야합니까? 쉼표 또는 무언가로 구분 된 배열 또는 값으로?



답변

변수 $_POST가 자동으로 채워집니다.

var_dump($_POST);내용을 보십시오 .

다음과 같은 개별 값에 액세스 할 수 있습니다. echo $_POST["name"];

물론 이것은 귀하의 양식이 일반적인 양식 인코딩 (예 : enctype=”multipart/form-data”

게시물 데이터가 다른 형식 (예 : JSON 또는 XML) 인 경우 다음과 같이 할 수 있습니다.

$post = file_get_contents('php://input');

$post원시 데이터가 포함됩니다.

표준 $_POST변수를 사용한다고 가정하면 다음 과 같이 확인란이 선택되어 있는지 테스트 할 수 있습니다.

if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes')
{
     ...
}

체크 박스 배열이있는 경우 (예 :

<form action="myscript.php" method="post">
  <input type="checkbox" name="myCheckbox[]" value="A" />val1<br />
  <input type="checkbox" name="myCheckbox[]" value="B" />val2<br />
  <input type="checkbox" name="myCheckbox[]" value="C" />val3<br />
  <input type="checkbox" name="myCheckbox[]" value="D" />val4<br />
  <input type="checkbox" name="myCheckbox[]" value="E" />val5
  <input type="submit" name="Submit" value="Submit" />
</form>

[ ]확인란 이름에를 사용 하면 선택한 값이 PHP 스크립트에서 배열로 액세스됨을 나타냅니다. 이 경우 $_POST['myCheckbox']단일 문자열을 반환하지 않지만 선택된 확인란의 모든 값으로 구성된 배열을 반환합니다.

예를 들어, 모든 상자를 선택하면 다음 $_POST['myCheckbox']으로 구성된 배열이 {A, B, C, D, E}됩니다. 다음은 값 배열을 검색하고 표시하는 방법의 예입니다.

  $myboxes = $_POST['myCheckbox'];
  if(empty($myboxes))
  {
    echo("You didn't select any boxes.");
  }
  else
  {
    $i = count($myboxes);
    echo("You selected $i box(es): <br>");
    for($j = 0; $j < $i; $j++)
    {
      echo $myboxes[$j] . "<br>";
    }
  }


답변

$_POST변수 에서 액세스 할 수 있어야 합니다.

foreach ($_POST as $param_name => $param_val) {
    echo "Param: $param_name; Value: $param_val<br />\n";
}


답변

더 이상 사용되지 않으며 superglobals에 직접 액세스하고 싶지 않습니다 (내가 생각하는 PHP 5.5 이후?)

모든 최신 IDE는 다음을 알려줍니다.

수퍼 글로벌에 직접 액세스하지 마십시오. (예 : 일부 필터 기능을 사용 filter_input)

우리 솔루션의 경우 모든 요청 매개 변수를 얻으려면 메서드를 사용해야합니다. filter_input_array

입력 방법에서 모든 매개 변수를 얻으려면 다음을 사용하십시오.

$myGetArgs = filter_input_array(INPUT_GET);
$myPostArgs = filter_input_array(INPUT_POST);
$myServerArgs = filter_input_array(INPUT_SERVER);
$myCookieArgs = filter_input_array(INPUT_COOKIE);
...

이제 당신은 그것을 var_dump또는 당신의 foreach-Loops 에서 사용할 수 있습니다.

작동하지 않는 것은이 방법으로 $ _REQUEST 수퍼 글로벌에 액세스하는 것입니다. 그것은 항상 돌아 NULL오고 맞습니다.

모든 입력 매개 변수를 가져와야하는 경우 다른 메서드를 통해 전달하려면 다음 메서드와 같이 병합하면됩니다.

function askForPostAndGetParams(){
    return array_merge (
        filter_input_array(INPUT_POST),
        filter_input_array(INPUT_GET)
    );
}

편집 :이 메서드의 확장 버전 (요청 메서드 중 하나가 설정되지 않은 경우에도 작동) :

function askForRequestedArguments(){
    $getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array();
    $postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array();
    $allRequests = array_merge($getArray, $postArray);
    return $allRequests;
}


답변

그래서, $_POST배열 과 같은 것 ?

다시 문자열 http_build_query($_POST)로 가져 오는 데 사용할 수 있습니다 var=xxx&var2=yyy. 아니면 print_r($_POST)거기에 무엇이 있는지 확인하십시오.


답변

이건 왜 안돼요?

extract($_POST);


답변

이 u를 사용하면 모든 포스트 변수를 얻을 수 있습니다.

print_r($_POST)


답변