$_REQUEST, $_GET, $_POST 중 어느 것이 가장 빠릅니까?
다음 중 어떤 코드가 더 빠릅니까?
$temp = $_REQUEST['s'];
또는
if (isset($_GET['s'])) {
$temp = $_GET['s'];
}
else {
$temp = $_POST['s'];
}
디폴트로는 의 내용이 포함되어 있습니다$_REQUEST
.$_GET
,$_POST
그리고.$_COOKIE
.
그러나 이것은 에 따라 달라지는 기본값일 뿐 쿠키로 작업하기를 원하는지는 확실하지 않습니다.
만약 내가 선택해야 한다면, 나는 아마도 사용하지 않을 것이다.$_REQUEST
, 그리고 나는 선택하겠습니다.$_GET
또는$_POST
--어플리케이션이 무엇을 해야 하는지에 따라 (둘 다 할 수 없지만 둘 다 할 수 없다) :일반적으로 다음과 같습니다.
- 를 사용해 주세요.
$_GET
다른 사람이 당신의 응용 프로그램에 데이터를 요청하고 있을 때. - 그리고 너는 그것을 사용해야 한다.
$_POST
다른 사용자가 사용자의 응용 프로그램에 데이터를 푸시(삭제 또는 업데이트)하고 있을 때.
어느 쪽이든 퍼포먼스에 대해서는 큰 차이는 없습니다.그 차이는 스크립트의 나머지 부분과 비교하면 무시할 수 있습니다.
취득과 POST
1) GET 및 POST 모두 어레이를 만듭니다(예: array(키=> 값, 키2=> 값2, 키3=> 값3, ...).이 배열은 키/값 쌍을 유지합니다. 여기서 키는 폼 컨트롤의 이름이고 값은 사용자의 입력 데이터입니다.
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를 사용합니다.이렇게 간단한 조작의 속도에 대해서는 아무도 신경 쓰지 않습니다.그리고 이것은 훨씬 더 깔끔한 코드입니다.
걱정 마세요.그러나 두 번째 솔루션(및 이러한 변수가 존재하지 않는 경우 추가 확인)을 사용해야 합니다. 왜냐하면 이 솔루션에는 보안 문제가 있기 때문입니다.$_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'];
}
안전성이 높고 속도 차이가 크게 나지 않기 때문에 사용하세요.
$_GET은 쿼리 문자열 또는 URL에서 변수를 가져옵니다.>
$_POST는 (일반적으로) 형식 등의 POST 메서드에서 변수를 가져옵니다.
$_REQUEST는 $_GET과 $_POST의 결합입니다.$_POST는 $_GET보다 우선됩니다.검증을 위해 자기 참조 양식에 $_REQUEST를 사용하는 것이 좋습니다.
해커가 $_POST 또는 $_GET 값을 덮어쓰는 쿠키를 설정할 수 있기 때문에 보안상의 문제가 있습니다.기밀 데이터를 취급하는 경우에는 $_REQUEST 사용을 권장하지 않습니다.– Xandor
사용할 수 없다$_GET
을 대신하는.$_POST
어떤 경우에는
언제?
- 파일을 업로드 할 때 사용합니다.
- url에 데이터를 표시하지 않을 경우.
GET
에는, 송신하는 정보의 양에도 제한이 있습니다.제한은 약 2000자입니다.
Other thing's there are few case when you can't retrieve a data using $_POST
When ?
- when data is passed in URL.
For Rest Service
`GET` - Provides a read only access to a resource.
`PUT` - Used to create a new resource.
there is nothing be wrong to use $_REQUEST
.
But the way to do that is to check $_SERVER['REQUEST_METHOD'] explicitly, not rely on $_POST being empty for a GET.
I would use the second method as it is more explicit. Otherwise you don't know where the variables are coming from.
Why do you need to check both GET and POST anyway? Surely using one or the other only makes more sense.
I only ever use _GET or _POST. I prefer to have control.
What I don't like about either code fragment in the OP is that they discard the information on which HTTP method was used. And that information is important for input sanitization.
For example, if a script accepts data from a form that's going to be entered into the DB then the form had better use POST (use GET only for idempotent actions). But if the script receives the input data via the GET method then it should (normally) be rejected. For me, such a situation might warrant writing a security violation to the error log since it's a sign somebody is trying something on.
With either code fragment in the OP, this sanitization wouldn't be possible.
I would use $_POST
, and $_GET
because differently from $_REQUEST
their content is not influenced by variables_order
.
When to use $_POST
and $_GET
depends on what kind of operation is being executed. An operation that changes the data handled from the server should be done through a POST request, while the other operations should be done through a GET request. To make an example, an operation that deletes a user account should not be directly executed after the user click on a link, while viewing an image can be done through a link.
I use this,
$request = (count($_REQUEST) > 1)?$_REQUEST:$_GET;
the statement validates if $_REQUEST has more than one parameter (the first parameter in $_REQUEST will be the request uri which can be used when needed, some PHP packages wont return $_GET so check if its more than 1 go for $_GET, By default, it will be $_POST.
You are prematurely optimizing. Also, you should really put some thought into whether GET should be used for stuff you're POST-ing, for security reasons.
보기 흉하고 코드를 라이브로 푸시할 때 최종 해결책으로 추천하지 않지만, 휴식 기능을 구축하는 동안 때때로 '모든 것을 잡는' 매개 변수를 잡는 것이 편리할 수 있습니다.
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에서 취득한 것을 처리하기 위해 추가할 수도 있습니다.특정 rest-function이 무엇을 하고 있는지 결정하면 해당 콜에 적합한 것을 선택하여 배포 버전에 필요한 것을 얻을 수 있습니다.이것은 'REQUEST_METHOD'가 설정되어 있는 것을 전제로 하고 있습니다.
언급URL : https://stackoverflow.com/questions/1924939/among-request-get-and-post-which-one-is-the-fastest
'programing' 카테고리의 다른 글
컨텐츠 스크립트를 사용하여 페이지 컨텍스트 변수 및 함수에 액세스합니다. (0) | 2022.10.14 |
---|---|
JSF backing bean 메서드에서 JSF 컴포넌트를 갱신할 수 있습니까? (0) | 2022.10.14 |
object==module 또는 null==object? (0) | 2022.10.14 |
오류 1452 MySQL 및 NodeJS.왜 데이터베이스가 내 테이블을 제대로 참조할 수 없는 거죠? (0) | 2022.10.14 |
특정 문자 뒤에 문자열 부분 제거 (0) | 2022.10.14 |