>백엔드 개발 >PHP 문제 >PHP에서 외부 매개변수를 받는 방법은 무엇입니까?

PHP에서 외부 매개변수를 받는 방법은 무엇입니까?

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-06-09 17:17:212195검색

이 글에서는 PHP에서 외부 매개변수를 받는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP에서 외부 매개변수를 받는 방법은 무엇입니까?

PHP와 같은 웹 언어에서는 매개변수를 받는 것이 매우 중요한 능력입니다. 결국 일반적인 대화형 디스플레이를 위해서는 프런트 엔드 양식이나 비동기 요청에서 전달된 데이터를 가져와야 합니다. 물론, 이는 웹 개발이 가능한 모든 언어에 있어서 필수적인 기능이기도 합니다. 오늘은 PHP의 다양한 매개변수 접근 형식을 살펴보겠습니다.

먼저 URL에 양식과 GET 매개변수를 제공하는 아래와 같은 정적 페이지를 준비해야 합니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="?show=1" method="post">
        姓名:<input type="text" name="name"/><br />
        电话:<input type="text" name="tel"/><br/>

        地址(省):<input type="text" name="address.prov"/><br/>
        地址(市):<input type="text" name="address city"/><br/>

        兴趣1:<input type="text" name="interest[]"/><br/>
        兴趣2:<input type="text" name="interest[]"/><br/>
        兴趣3:<input type="text" name="interest[]"/><br/>

        学历1:<input type="text" name="edu[one]"/><br/>
        学历2:<input type="text" name="edu[two]"/><br/>

        <input type="submit" value="提交" >
    </form>
</body>
</html>

Normal $_GET, $_POST 방법

// 正常的GET、POST
    echo $_GET[&#39;show&#39;], &#39;<br/>&#39;; // 1
    echo $_POST[&#39;name&#39;], &#39;<br/>&#39;; // 提交的内容

이것이 가장 기본입니다 GET 매개변수는 $_GET을 통해 얻고, POST 매개변수는 $_POST를 통해 얻습니다.

일반적인 $_REQUEST 방법

    // 使用REQUEST
    echo $_REQUEST[&#39;show&#39;], &#39;<br/>&#39;; // 1
    echo $_REQUEST[&#39;tel&#39;], &#39;<br/>&#39;; // 提交的内容

$_REQUEST는 업로드된 파일을 제외하고 요청의 모든 매개변수를 가져오는 것입니다. 즉, 세 가지 액세스 매개변수 변수 $_GET, $_POST 및 $_COOKIE(구성 필요, 기본적으로 포함되지 않음)의 모든 내용을 포함합니다. 여기서 주목해야 할 점은 PHP5.3 이후에는 $_REQUEST에서 허용하는 매개변수 변수 내용이 php.ini 파일의 request_order에 의해 지정된다는 점입니다. 기본적으로 이 구성 매개변수의 값은 GP, 즉 GET과 POST입니다. COOKIE가 없습니다. COOKIE를 원하시면 수정하고 C를 추가하셔야 할 것 같습니다.

$_GET, $_POST에 같은 이름의 콘텐츠가 있으면 어떻게 되나요? $_REQUEST가 표시되는 순서는 왼쪽에서 오른쪽으로 구성 매개변수의 순서를 기반으로 하며, 후자가 이전 매개변수를 포함합니다. 예를 들어, GP를 구성하는 경우 매개변수 적용 범위의 순서는 POST > GET, 최종적으로 표시되는 내용은 POST 콘텐츠입니다.

register_globals issue

    // register_globals 如果打开
    echo $name, &#39;<br/>&#39;; // 提交的内容
    echo $tel, &#39;<br/>&#39;; // 提交的内容

이것은 안전하지 않은 구성이며 php.ini 파일에도 구성되어 있습니다. 그 기능은 요청한 매개변수를 변수로 직접 변환하는 것인데 전역변수 오염 문제가 있으니 열지 마세요! ! ! 현재 php.ini 파일은 기본적으로 꺼져 있습니다.

import_request_variables

    // import_request_variables 抱歉,5.4之后已经取消了
    import_request_variables(&#39;pg&#39;, &#39;pg_&#39;);
    echo $pg_show, &#39;<br/>&#39;;
    echo $pg_name, &#39;<br/>&#39;;

이 함수는 지정된 매개 변수의 내용을 전역 변수로 수동으로 등록합니다. 마찬가지로 5.4 이후에도 이러한 함수는 위험이 있습니다. 하다.

extract

    extract($_POST, EXTR_PREFIX_ALL, &#39;ex&#39;);
    echo $ex_name, &#39;<br/>&#39;; // 提交的内容
    echo $ex_tel, &#39;<br/>&#39;; // 提交的内容

extract는 현재 위의 두 매개변수 변환을 대체할 수 있는 방법으로 지원됩니다. 두 번째 매개변수인 기존 변수의 덮어쓰기를 제어하는 ​​것은 우리의 몫입니다. 이는 제어 가능한 환경에서 전역 변수를 오염시키는 문제를 크게 피할 수 있습니다. 물론 우리가 직접 사용해야 한다는 전제가 있습니다. 특히 문서 참조를 직접 찾아보실 수 있습니다!

. 및 매개변수 이름의 공백

    // 参数名中的.和空格
    echo $_REQUEST[&#39;address_prov&#39;], &#39;<br/>&#39;; // 提交的内容
    echo $_REQUEST[&#39;address_city&#39;], &#39;<br/>&#39;; // 提交的内容

양식에서 제출한 입력 이름에 . 또는 공백이 포함된 경우 바로 밑줄로 변환됩니다. 그러나 프런트엔드 이름 지정에는 . 또는 공백을 사용하지 않는 것이 좋습니다. 필요한 경우에만 밑줄을 사용하세요.

매개변수 이름의 []

    // 参数名中的[]
    print_r($_REQUEST[&#39;interest&#39;]); // Array (v,....) 
    echo &#39;<br />&#39;;
    print_r($_REQUEST[&#39;edu&#39;]); // Array (k/v,....)

양식에서 제출한 입력 이름이 배열, 즉 "interest[]" 또는 "edu[one]"인 경우 매개변수는 기본적으로 배열 형태의 내용이 됩니다.

고급 php://input

    // php://input
    $content = file_get_contents(&#39;php://input&#39;);   
    print_r($content); //name=xxx&.....

마지막으로 php://input 형식의 매개변수는 인터페이스 개발에 자주 사용됩니다. 일반적으로 보안이나 매개변수 필드가 많은 경우 프런트 엔드에서는 Body 콘텐츠 전체 부분을 Body Raw 형식으로 직접 전송합니다. 현재로서는 이 형식으로만 얻을 수 있습니다. 이 Body Raw의 원본 콘텐츠는 일반적으로 텍스트의 전체 단락이거나 일부 암호화된 콘텐츠일 수 있습니다. 형식은 직접 정의할 수 있습니다. 일반 양식을 접할 때 우리가 받게 되는 것은 위의 name=xxx&tel=xxx&...와 같은 원본 양식 콘텐츠입니다.

enctype="multipart/form-data"를 사용하면 콘텐츠를 얻을 수 없다는 점에 유의하세요. 동시에 이 방법은 $HTTP_RAW_POST_DATA 전역 변수도 대체합니다. 더 이상 제거된 기능을 사용하지 마세요. 새로운 구문 기능을 사용하려면 가능한 한 빨리 새 버전의 PHP를 업데이트하세요!

요약

정리해 보니 단순한 매개변수 연결에도 형태와 주의가 필요한 것들이 너무 많아서 정말 눈이 번쩍 뜨이는 것을 발견했습니다. 배움에는 끝이 없다는 말은 여전히 ​​똑같습니다. 계속 깊이 공부하면 조만간 마스터가 될 것입니다!

테스트 코드:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202002/source/%E5%8F%98%E7%9D%80%E8%8A%B1%E6%A0%B7%E6%9D%A5%E6%8E%A5%E5%8F%82%EF%BC%8CPHP%E4%B8%AD%E6%8E%A5%E6%94%B6%E5%A4%96%E9%83%A8%E5%8F%82%E6%95%B0%E7%9A%84%E6%96%B9%E5%BC%8F.php

추천 학습: php 비디오 튜토리얼

위 내용은 PHP에서 외부 매개변수를 받는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제