[php] $ _REQUEST, $ _GET 및 $ _POST 중 가장 빠른 것은?

이 코드들 중 어느 것이 더 빠를까요?

$temp = $_REQUEST['s'];

또는

if (isset($_GET['s'])) {
  $temp = $_GET['s'];
}
else {
  $temp = $_POST['s'];
}



답변

$_REQUEST기본적으로 $_GET, $_POST및 의 내용을 포함합니다 $_COOKIE.

그러나 이것은 기본값 일 뿐이며 variables_order; 쿠키로 작업하고 싶지는 않습니다.

내가 선택해야한다면, 나는 아마 사용하지 것이다 $_REQUEST, 나는 선택할 것 $_GET또는 $_POST내 응용 프로그램이 무엇을해야하는지에 따라 (즉, 둘 중 하나만) : 일반적으로 말하기를 :

  • $_GET누군가 애플리케이션 에서 데이터 요청할 때 사용해야 합니다.
  • 또한 $_POST누군가 데이터 응용 프로그램으로 푸시 (삽입 또는 업데이트 또는 삭제) 할 때 사용해야 합니다.

어느 쪽이든, 성능에 큰 차이는 없습니다 : 다른 스크립트와 비교할 때 그 차이는 무시할 수 있습니다.


답변

GET vs. POST

1) GET과 POST는 배열을 만듭니다 (예 : array (key => value, key2 => value2, key3 => value3, …)). 이 배열에는 키 / 값 쌍이 있습니다. 여기서 키는 양식 컨트롤의 이름이고 값은 사용자의 입력 데이터입니다.

2) GET과 POST는 모두 $ _GET과 $ _POST로 취급됩니다. 이들은 초 전역이므로 범위에 관계없이 항상 액세스 할 수 있습니다. 따라서 특별한 작업을 수행하지 않고도 모든 함수, 클래스 또는 파일에서 액세스 할 수 있습니다.

3) $ _GET은 URL 매개 변수를 통해 현재 스크립트에 전달 된 변수의 배열입니다.

4) $ _POST는 HTTP POST 메소드를 통해 현재 스크립트에 전달 된 변수의 배열입니다.

GET을 언제 사용해야합니까?

GET 메소드를 사용하여 양식에서 전송 된 정보는 모든 사람이 볼 수 있습니다 (모든 변수 이름 및 값이 URL에 표시됨). GET은 전송할 정보의 양에 제한이 있습니다. 제한은 약 2000 자입니다. 그러나 변수가 URL에 표시되므로 페이지를 책갈피에 추가 할 수 있습니다. 경우에 따라 유용 할 수 있습니다.

민감하지 않은 데이터를 전송하는 데 GET을 사용할 수 있습니다.

참고 : GET을 사용하여 비밀번호 나 기타 중요한 정보를 보내지 마십시오!

POST를 언제 사용해야합니까?

POST 메소드를 사용하여 양식에서 전송 된 정보는 다른 사람이 볼 수 없으며 (모든 이름 / 값은 HTTP 요청의 본문에 포함됨) 전송할 정보의 양에는 제한이 없습니다.

또한 POST는 파일을 서버에 업로드하는 동안 멀티 파트 이진 입력 지원과 같은 고급 기능을 지원합니다.

그러나 변수는 URL에 표시되지 않으므로 페이지를 책갈피에 추가 할 수 없습니다.


답변

$ _GET은 검색어 또는 URL에서 변수를 검색합니다.>

$ _POST는 (일반적으로) 형식과 같은 POST 메소드에서 변수를 검색합니다.

$ _REQUEST는 $ _GET과 $ _POST의 병합입니다. 여기서 $ _POST는 $ _GET보다 우선합니다. 유효성 검사를 위해 자체 굴절 양식에 $ _REQUEST를 사용하는 것이 좋습니다.


답변

나는 사용을 제안 $_POST하고$_GET 명시 적으로.

어쨌든 적절한 사이트 디자인으로 $ _REQUEST를 사용하는 것은 불필요하며 더 쉽게 열 수 있도록하는 것과 같은 단점이 있습니다. CSRF/XSS , URL에 데이터를 저장함으로써 발생 공격 및 기타 사소한 이 있습니다.

속도 차이는 어느 쪽이든 최소화해야합니다.


답변

요청을 사용하십시오. 아무도 그렇게 간단한 작업의 속도에 신경 쓰지 않으며 코드가 훨씬 깨끗합니다.


답변

걱정마 이 보안 문제 때문에 그러나 당신은 여전히, 두 번째 솔루션 (플러스 기존의 해당 변수의 없음에 대한 추가 검사)를 사용한다 $_REQUEST(이후이 $_GET$_POST그 배열의 유일한 소스되지 않습니다).

$_REQUEST어제 문제에 대한 게시물이 있다고 생각합니다. 찾아 보도록하겠습니다.

편집 : 아 글쎄, 직접 게시물은 아니지만 어쨌든 여기 있습니다 : http://kuza55.blogspot.com/2006/03/request-variable-fixation.html


답변

if (isset($_GET['s'])) {
  $temp = $_GET['s'];
}
else {
  $temp = $_POST['s'];
}

더 안전하고 눈에 띄는 속도 차이를 만들지 않기 때문에 사용하십시오