이 글에서는 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>
// 正常的GET、POST echo $_GET['show'], '<br/>'; // 1 echo $_POST['name'], '<br/>'; // 提交的内容
이것이 가장 기본입니다 GET 매개변수는 $_GET을 통해 얻고, POST 매개변수는 $_POST를 통해 얻습니다.
// 使用REQUEST echo $_REQUEST['show'], '<br/>'; // 1 echo $_REQUEST['tel'], '<br/>'; // 提交的内容
$_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 如果打开 echo $name, '<br/>'; // 提交的内容 echo $tel, '<br/>'; // 提交的内容
이것은 안전하지 않은 구성이며 php.ini 파일에도 구성되어 있습니다. 그 기능은 요청한 매개변수를 변수로 직접 변환하는 것인데 전역변수 오염 문제가 있으니 열지 마세요! ! ! 현재 php.ini 파일은 기본적으로 꺼져 있습니다.
// import_request_variables 抱歉,5.4之后已经取消了 import_request_variables('pg', 'pg_'); echo $pg_show, '<br/>'; echo $pg_name, '<br/>';
이 함수는 지정된 매개 변수의 내용을 전역 변수로 수동으로 등록합니다. 마찬가지로 5.4 이후에도 이러한 함수는 위험이 있습니다. 하다.
extract($_POST, EXTR_PREFIX_ALL, 'ex'); echo $ex_name, '<br/>'; // 提交的内容 echo $ex_tel, '<br/>'; // 提交的内容
extract는 현재 위의 두 매개변수 변환을 대체할 수 있는 방법으로 지원됩니다. 두 번째 매개변수인 기존 변수의 덮어쓰기를 제어하는 것은 우리의 몫입니다. 이는 제어 가능한 환경에서 전역 변수를 오염시키는 문제를 크게 피할 수 있습니다. 물론 우리가 직접 사용해야 한다는 전제가 있습니다. 특히 문서 참조를 직접 찾아보실 수 있습니다!
// 参数名中的.和空格 echo $_REQUEST['address_prov'], '<br/>'; // 提交的内容 echo $_REQUEST['address_city'], '<br/>'; // 提交的内容
양식에서 제출한 입력 이름에 . 또는 공백이 포함된 경우 바로 밑줄로 변환됩니다. 그러나 프런트엔드 이름 지정에는 . 또는 공백을 사용하지 않는 것이 좋습니다. 필요한 경우에만 밑줄을 사용하세요.
// 参数名中的[] print_r($_REQUEST['interest']); // Array (v,....) echo '<br />'; print_r($_REQUEST['edu']); // Array (k/v,....)
양식에서 제출한 입력 이름이 배열, 즉 "interest[]" 또는 "edu[one]"인 경우 매개변수는 기본적으로 배열 형태의 내용이 됩니다.
// php://input $content = file_get_contents('php://input'); 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!