이 코드들 중 어느 것이 더 빠를까요?
$temp = $_REQUEST['s'];
또는
if (isset($_GET['s'])) {
$temp = $_GET['s'];
}
else {
$temp = $_POST['s'];
}
이 코드들 중 어느 것이 더 빠를까요?
$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에 표시되지 않으므로 페이지를 책갈피에 추가 할 수 없습니다.
요청을 사용하십시오. 아무도 그렇게 간단한 작업의 속도에 신경 쓰지 않으며 코드가 훨씬 깨끗합니다.
$_REQUEST
것이 잘못된 결론입니다. 내 대답을 참조하십시오.
걱정마 이 보안 문제 때문에 그러나 당신은 여전히, 두 번째 솔루션 (플러스 기존의 해당 변수의 없음에 대한 추가 검사)를 사용한다 $_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'];
}
더 안전하고 눈에 띄는 속도 차이를 만들지 않기 때문에 사용하십시오
$_REQUEST
하지만 여전히 동일한 스크립트에 액세스 할 수 있습니다 (내 경우에는 동일한 스크립트가 다른 '조치'와 함께 사용되며 때로는 $ _GET이 괜찮을 수도 있지만 다른 경우에는 $가 필요합니다. _POST는 데이터를 숨기거나 보호합니다).
해커가 $ _POST 또는 $ _GET 값을 무시하는 쿠키를 설정할 수 있기 때문에 특정 보안 문제가 있습니다. 민감한 데이터를 처리하는 경우 $ _REQUEST를 사용하지 않는 것이 좋습니다. – 잔 도르
당신은 $_GET
대신 사용할 수 없습니다$_POST
어떤 경우에는 .
언제 ??
GET
전송할 정보의 양에도 제한이 있습니다. 제한은 약 2000 자입니다.
다른 것은 당신이 사용하여 데이터를 검색 할 수없는 경우가 거의 없습니다 $_POST
언제 ?
휴식 서비스
`GET` - Provides a read only access to a resource.
`PUT` - Used to create a new resource.
사용할 잘못이 없습니다 $_REQUEST
.
그러나이를 수행하는 방법은 $ _SERVER [ 'REQUEST_METHOD']를 명시 적으로 확인하는 것입니다. GET에는 비어있는 $ _POST에 의존하지 않습니다.
$_SERVER['REQUEST_METHOD']
스크립트 를 사용 하여 스크립트를 호출하는지 확인 하는 데 유용한 조언 그러나 아무 문제가 없다고 말하는 것은 $_REQUEST
100 % 사실이 아닙니다. 해커가 $ _POST 또는 $ _GET 값을 재정의하는 쿠키를 설정할 수 있기 때문에 특정 보안 문제가 있습니다. 민감한 데이터를 처리하는 경우을 사용하지 않는 것이 좋습니다 $_REQUEST
.
$ _GET은 검색어 또는 URL에서 변수를 검색합니다.>
$ _POST는 (일반적으로) 형식과 같은 POST 메소드에서 변수를 검색합니다.
$ _REQUEST는 $ _GET과 $ _POST의 병합입니다. 여기서 $ _POST는 $ _GET보다 우선합니다. 유효성 검사를 위해 자체 굴절 양식에 $ _REQUEST를 사용하는 것이 좋습니다.
request_order
쿠키 값 에 의존 하고 쿠키 값을 포함 할 수 있으므로 매우 신뢰할 수 없거나 유용한 기능이 아닙니다.
더 명백한 두 번째 방법을 사용합니다. 그렇지 않으면 변수가 어디에서 오는지 알 수 없습니다.
어쨌든 GET과 POST를 모두 확인해야하는 이유는 무엇입니까? 분명히 하나 또는 다른 것을 사용하는 것이 더 의미가 있습니다.
GET
한 항목 (예 : 항목 이동)과 POST
여러 항목 ( 확인란이있는 양식 )에만 사용되는 것으로 확인했습니다 .
_GET 또는 _POST 만 사용합니다. 나는 통제하는 것을 선호합니다.
OP의 코드 조각 중 하나가 마음에 들지 않는 것은 HTTP 메소드가 사용 된 정보를 버리는 것입니다. 그리고 그 정보는 입력 소독에 중요합니다.
예를 들어, 스크립트가 DB에 입력 될 양식의 데이터를 승인하면 양식이 POST를 더 잘 사용 하는 것입니다 (등시성 작업에만 GET 사용). ). 그러나 스크립트가 GET 메소드를 통해 입력 데이터를 수신하면 (일반적으로) 거부해야합니다. 나를 위해, 그러한 상황은 누군가가 무언가를 시도하고 있다는 표시이기 때문에 오류 로그에 보안 위반을 쓰는 것을 보증 할 수 있습니다.
OP에 코드 조각이 있으면 이러한 살균이 불가능합니다.
$_POST
검색 엔진 크롤러가 다음과 같은 작업을 수행하지 못하게 하는 것이 명시
조기 최적화 중입니다. 또한 보안상의 이유로 GET을 POST 할 대상에 사용 해야하는지 여부를 고려해야합니다.
그것은 추악하고 코드 라이브를 푸시 할 때 최종 솔루션으로 권장하지 않지만 나머지 함수를 빌드하는 동안 'catch-all'매개 변수 그래버를 갖는 것이 때로는 편리합니다.
public static function parseParams() {
$params = array();
switch($_SERVER['REQUEST_METHOD']) {
case "PUT":
case "DELETE":
parse_str(file_get_contents('php://input'), $params);
$GLOBALS["_{$_SERVER['REQUEST_METHOD']}"] = $params;
break;
case "GET":
$params = $_GET;
break;
case "POST":
$params = $_POST;
break;
default:
$params = $_REQUEST;
break;
}
return $params;
}
창조적 인 누군가가 명령 줄 매개 변수 나 IDE에서 오는 것을 처리하기 위해 추가 할 수도 있습니다. 지정된 휴면 기능이 수행하는 작업을 결정하면 해당 호출에 적합한 것을 선택하여 배포 버전에 필요한 것을 얻을 수 있습니다. 'REQUEST_METHOD'가 설정되어 있다고 가정합니다.
!isset($_REQUEST['s'])
.