>백엔드 개발 >PHP 튜토리얼 >PHP 학습 가이드 - 9장

PHP 학습 가이드 - 9장

黄舟
黄舟원래의
2016-12-23 09:54:231236검색

웹페이지간 정보전송

이 장의 핵심

HTTP는 왜 계속 확산되는가?

GET 매개변수

GET 스타일을 사용하는 또 다른 URL

양식 변수 처리

PHP 슈퍼 배열

이 장은 간단합니다. 웹페이지 간 데이터 전달에 관한 내용입니다. 이러한 정보는 PHP에만 있는 것이 아니라 PHH/HTML 또는 HTTP 프로토콜 자체의 중요한 부분입니다.

HTTP는 무상태입니다

웹 서비스에 대해 기억해야 할 가장 중요한 점 중 하나는 HTTP 프로토콜 자체가 무상태라는 것입니다. 당신이 시적인 영혼을 가지고 있다면, 각각의 HTTP 요청이 집 없이, 완전히 알려지지 않은 것처럼 혼자라고 말할 수 있습니다. 당신은 그 내용을 알고 있습니다. 덜 시적인 의미로 말하자면 이는 각 HTTP 요청(각 요청 및 페이지 전송)이 다른 모든 콘텐츠와 독립적이고 클라이언트의 신원을 알지 못하며 메모리도 없다는 것을 의미합니다. 각 요청은 독립적인 프로세스를 생성하고, 사소하지만 중요한 작업인 파일 서비스를 완료한 다음 자동으로 사라집니다. 이는 매우 잔인하게 들리며 아마도 "처리 가능한 상태로 돌아가는 것"이라고 말할 수 있습니다.

웹사이트가 매우 느슨한 단방향 탐색(1페이지가 2페이지로 연결되고, 2페이지가 3페이지로 연결되는 등)으로 설계되었더라도 PTTP 지원은 누군가가 2페이지를 탐색하고 있는지 전혀 알거나 신경 쓰지 않습니다. 1페이지부터. 따라서 페이지 1의 변수를 HTML 자체를 통해 페이지로 가져올 수는 없습니다. HTML을 사용하여 양식을 표시하고 해당 양식을 사용하여 일부 정보를 입력할 수 있지만 다른 방법을 사용하여 정보를 다른 페이지나 다른 프로그램으로 전송하지 않는 한 다른 페이지로 이동하면 변수가 사라집니다.

이것이 PHP와 같은 양식 처리 기술을 수입하는 이유입니다. PHP는 한 페이지에서 다른 페이지로 전달된 변수를 검색하여 추가로 사용할 수 있습니다. PHP 기능은 이러한 유형의 데이터 전송 기능에 매우 뛰어나므로 다양한 웹 사이트 작업을 더 빠르고 쉽게 완료할 수 있습니다.

HTML 양식은 웹사이트에서 하나의 웹페이지에서 일부 데이터를 전달하는 가장 유용한 방법입니다. 쿠키 및 세션과 같이 여러 웹페이지에서 상태를 유지하는 더 많은 지속적인 방법이 있습니다. 이에 대해서는 다음에서 설명하겠습니다. 1장 27장에서는 이러한 기능을 소개합니다. 이 장에서는 웹 페이지 간에 정보를 전송하는 보다 기본적인 기술, 즉 HTTP와 GET 및 POST 메서드를 사용하여 웹 페이지를 동적으로 생성하고 데이터를 처리하는 기술에 중점을 둘 것입니다.

ASP 프로그래머가 이것을 보면 "PHP가 형편없어!"라고 말할 수도 있습니다. 왜냐하면 ASP에서 사용한 세션 변수가 매우 마법적이기 때문입니다. 이것은 누군가의 거품을 터뜨리려는 것이 아니지만 Microsoft는 쿠키를 사용하여 세션 변수를 저장할 계획이지만 이로 인해 모든 잠재적인 문제가 발생할 수 있습니다.

GET 매개변수

GET 메서드는 매개변수를 URI [Uniform Resource Indicator, 일관된 리소스 표시기, 일부 사람들은 URI(Uniform Resource Indicator, 일관된 리소스 위치 지정자) 사용에 더 익숙함] 쿼리 문자열로 처리합니다. 한 페이지에서 다른 페이지로 전달되는 페이지의 일부입니다. 양식 처리에 사용되는 경우 GET은 물음표(?)를 구분 기호로 사용하여 ACTION 속성에 지정된 URL에 변수 이름과 값을 추가하고 모든 콘텐츠를 처리를 제공하는 기술(이 경우 웹 서버)에 제출합니다.

다음은 GET 메소드를 사용하는 HTML 양식의 예입니다(team_select.html에 파일 저장).

< HTML >

<

< TITLE > 1부< /TITLE >

< /HEAD >

<

< ; 🎜> < SELECT NAME = “Team” SIZE=2 >

사용자가 항목을 선택하고 제출 버튼을 클릭하면 브라우저는 사이에 공백 없이 이러한 요소를 다음 순서로 결합합니다. 🎜>
ACTION이라는 단어 뒤에 따옴표로 묶인 URL(http://localhost/baseball.php)

물음표(?)는 다음 문자가 GET 문자열을 형성함을 나타냅니다.

NAME 변수, 등호 및 일치하는 VALUE(Team = Cubbies)

"&" 기호 및 "NAME = VALUE"(제출 = 제출)의 다음 쌍; 문자열 길이 제한 사항이 허용되면 &로 구분된 이러한 이름-값 조합은 여러 번 반복될 수 있습니다.

이렇게 하면 다음과 같은 URL 문자열이 형성됩니다.

(http://locahost/baseball .php ? Team = Cubbies&Submit = Select)

여기서 문자열이 새로워집니다. 요청은 브라우저의 주소 공간으로 전송됩니다. 위의 양식이 제출된 후 양식을 처리하는 PHP 스크립트(baseball.php)는 요청 문자열의 끝에서 GET 변수를 얻고 이러한 변수에 대해 해당 작업을 수행합니다. 다음 예에서는 두 값 중 하나 ​리터럴 문자열에 삽입됩니다.

다음 프로그램 코드는 원본 HTML 양식을 처리하기 위해 PHP에서 사용하는 양식 처리 부분입니다.

< HEAD >

GET 예, 2부<br><br><style type="“text/css”"><br/><br/>< > <br/>BODY {글꼴 크기: 24pt;}<br/><br/>-- ><br/><br/>< /STYLE ><br/><br/>< /HEAD ><br/><br/>< BODY ><br/><br/><P >이동<br/><br/>< ?php echo $_GET['팀'];? ><br/><br/>!<br/><br/>< /BODY ><br/><br/><<br/><br/>마지막으로 웹 페이지에 Go,Cubbies가 큰 글자로 표시되어야 합니다. <br/><br/>양식 처리에서 GET 방법은 POST 방법보다 훨씬 더 나은 장점이 있습니다. 완전히 새롭고 완전히 다른 URL 쿼리 문자열을 생성합니다. 이런 방식으로 사용자는 이 페이지를 북마크에 추가할 수 있습니다(개발팀이 기분이 나쁠 때 사기를 북돋아줄 수 있음). POST 메서드를 사용하여 양식에서 얻은 결과는 북마크에 추가할 수 없습니다. <br/><br/>그러나 단지 GET 매개변수를 사용하여 원하는 것을 달성할 수 있다고 해서 반드시 그래야 한다는 의미는 아닙니다. 대부분의 양식 핸들러의 경우 GET 메소드의 단점이 너무 심각하여 원래 HTML 4.0 공식 사양에서는 그렇지 않았습니다. 그것을 사용하는 것에 찬성합니다. 이러한 단점은 다음과 같습니다. <br/><br/>GET은 사용자 이름과 비밀번호가 숨겨져 액세스된 페이지로 클라이언트 브라우저의 메모리에 저장되고 화면에도 표시되기 때문에 로그인(로그인)에 적합하지 않습니다. 완전히 보입니다. <br/><br/>모든 GET 제출은 데이터 세트를 포함하여 웹 서버 로그에 기록됩니다. <br/><br/>GET은 서버 환경 변수에 데이터를 할당하기 때문에 URL 길이가 제한됩니다. GET을 사용할 때 매우 긴 URL이 어떤 모습일지 상상할 수 있지만 실제로는 아무도 이 방법을 사용하여 300단어 HTML 기사를 전달하려고 하지 않습니다. <br/><br/>원래 HTML 사양에서는 쿼리 문자열 길이를 255자로 제한했지만 나중에 255자 제한이 완화되었지만 매우 긴 문자열을 사용하면 실제로 문제가 발생합니다. <br/><br/>많은 논쟁 끝에 W3는 주로 북마크 기능으로 인해 여전히 양식 처리에서 GET 메서드를 사용하는 방식으로 되돌아갔습니다. GET 방법은 여전히 ​​양식 처리의 기본 선택이지만 부작용이 없는 경우에만 사용하는 것이 좋습니다. 두 가지 장점과 두 가지 단점을 종합하면 GET을 사용하여 양식을 처리하는 데 가장 적합한 용도는 실제로 "검색 상자"입니다. 비검색 양식 핸들러에서 GET 메소드를 사용할 이유가 전혀 없다면 POST 메소드를 대신 사용하십시오. <br/><br/>GET 스타일 URL의 더 나은 사용법<br/><br/>양식 처리에는 GET 메소드를 사용하지 않는 것이 좋습니다. 그러나 이와 관련된 URL 스타일은 웹 사이트 탐색, 특히 PHP로 자주 구축되는 웹 사이트와 같이 동적 광고가 있는 웹 사이트에 매우 유용합니다. 가변 형식 URL이 추가되기 때문에 템플릿에 매우 적합합니다. 기반으로 콘텐츠 개발 시스템을 제공합니다. <br/><br/>다음 예에서 볼 수 있듯이 태양광 자동차에 대한 정보가 풍부한 웹 사이트를 운영하고 있고 정보가 풍부하고 매력적인 페이지를 다음과 같이 길고 일관된 형식으로 저장했다고 가정합니다. <br/><br/>suspension_design.html<br/><br/>windtunnel_testing.html<br/><br/>friction_braking.html<br/><br/>그런데 웹사이트 규모가 커지면 이렇게 단순한 아카이브 웹사이트 구조로는 많은 시간이 걸리게 됩니다. 모든 페이지에서 몇 가지 사소한 변경 사항을 반복해야 하기 때문입니다. 이러한 페이지의 구조가 매우 간단한 경우에는 PHP를 사용하여 사이트를 템플릿 기반 시스템으로 변환할 수 있습니다. <br/><br/>단일 템플릿을 사용하여 각 주제(정보, 사진, 의견 등 포함)에 대한 별도의 텍스트 파일을 사용할 수도 있습니다. <br/><br/>topic.php<br/><br/>suspension_design . inc<br/><br/>windtunnel_testing .inc<br/><br/>friction_braking .inc <br/><br/>또는 더 크고 구체적으로 선택한 샘플 파일을 선택할 수도 있습니다: <br/> php inc<br/><br/> racing .php <br/><br/>race _strategy . inc<br/><br/>간단한 템플릿은 다음 예와 같습니다(필수 .inc 텍스트 파일을 포함하지 않았기 때문에 이 파일은 실제로 작동하지 않습니다). 🎜><br/>< HTML ><br/><br/>< HEAD ><br/><br/>< TITLE – 자동차 주제< TYPE= “text/css” ><br/><br/>< !-<br/><br/>BODY{font:verdana;font – size:12pt}<br/> < TABLE BORDER = 0 CELLPADDING = 0 WIDTH = 100% ><br/><br/>< YR ><br/><br/>< - Navbar, Get 스타일 URL 포함 .-- ><br/><br/>< #4282B4” ALIGN = 중앙 VALIGN=TOP WIDTH=25% ><br/><br/>< P ><br/><br/>< A HREF="mechanical_syatems .php? 이름 = Friction_braking">< B >마찰 제동< /B >< /A ><br/><br/>< BR ><br/><br/>< A HREF = "mechanical_syatems.php ?이름 = 스티어링" ; B >조향< /B >< /A ><br/><br/><BR ><br/><br/>< A HREF = "mechanical_systems .php ? 이름 = 서스펜션" < B > 서스펜션<<br/><br/>< <br/><br/>< A HREF = "mechanical_systems .php ? 이름 =tires" ><B < /B ><br/><br/>< <br/><BR ><br/><br/>< /P ><br/><br/>< /TD ><br/><br/>< <br/><br/>< TD BGCOLOR = “#FFFFFF” ALIGN = 왼쪽 VALIGN=TOP WIDTH = 75% ><br/><br/>< ?php include(“$_GET['Name'].inc” )? <<br/><br/>< /TE >< /TABLE ><br/><br/>< <br/><br/>탐색 모음의 링크를 클릭하면 마치 GET 핸들러를 제출한 것처럼 브라우저에서 처리된다는 점에 유의하세요. <br/><br/>그러나 이 솔루션의 경우 프로그램 코드의 일부를 수동으로 변경해야 합니다. 즉, 포함된 각 파일이 올바른 HTML 형식인지 확인하고 새 페이지가 추가될 때마다 탐색 모음을 추가해야 합니다. 웹사이트 새로운 연결 및 기타 유사한 콘텐츠. 양식과 내용을 최대한 분리하는 것을 원칙으로 하며, 데이터베이스를 선택하여 사용할 수도 있습니다. 데이터베이스를 사용하는 경우 URL은 다음과 같습니다. <br/><br/>(http://localhost/topic .php ?topicID = 2)<br/><br/>데이터베이스 호출을 처리하는 PHP 샘플을 가리킵니다. .version(단어 대신 숫자 변수를 사용하면 데이터베이스 쿼리가 더 빨라집니다). 새로운 주제가 데이터베이스에 추가되면 시스템이 탐색 모음에 링크를 추가하므로 수동 작업 없이 모든 웹 페이지를 생성할 수 있습니다. 여기서 "모두"라는 단어는 약간 과장되어 있지만 인력과 과도한 노동력을 절약할 수 있습니다. 시간). <br/><br/>POST 매개변수<br/><br/>POST는 현재 상대적으로 좋은 양식 처리 방법으로, 특히 한 번에 모두 사용할 필요가 없는 상황(장기 처리를 위해 일부 데이터 또는 기능 지정)에 적합합니다. 데이터베이스를 생성할 때처럼 정보 처리를 추가합니다. 양식 데이터가 핸들러(이 경우 PHP)에 전달되면 양식 본문에 포함됩니다. 제출된 정보가 다른 경우에는 URL에 변경 사항이 표시되지 않습니다. <br/><br/>POST 방식은 다음과 같은 장점이 있습니다. <br/><br/>◎ URL 쿼리 문자열이나 서버 로그, 화면에 오류 메시지가 표시되므로(예방 조치를 취하면 예를 들어 항상 HTML의 비밀번호 입력 형식을 사용하여 비밀번호 필드를 표현합니다.) 사용자가 입력한 정보는 볼 수 없습니다. <br/><br/>◎ 전달할 수 있는 데이터 양에 대한 제한은 느슨합니다(단지 200자를 넘는 것이 아니라 최대 2,000튜플까지). <br/><br/>그러나 POST에도 몇 가지 단점이 있습니다. <br/><br/>◎ 결과를 북마크로 표시할 수 없습니다. <br/><br/>◎ 이 방법은 일부 방화벽 설정과 호환되지 않습니다. 보안상의 이유로 방화벽은 특정 양식 데이터를 제거합니다. <br/><br/>이 책에서는 특히 파일에 쓰는 SQL 구문을 사용하거나 시스템에 데이터를 채우기 위해 INSERT를 사용할 때 양식을 처리하기 위해 일관되게 POST 메서드를 사용합니다. 즉, 사용 시점은 데이터 저장 위치에 데이터를 쓰고 웹 페이지를 표시하는 것입니다. POST 방법. <br/><br/>GET 및 POST 메소드를 동시에 사용 <br/><br/>알고 계셨나요? PHP는 동일한 페이지에서 GET 및 POST 변수를 모두 사용할 수 있으므로 자유롭게 동적 양식을 작성할 수 있습니다! <br/><br/>그러나 이는 즉시 다음과 같은 질문을 제기합니다. 동일한 변수 이름이 GET 및 POST 배열에 (의도적으로 또는 다른 이유로) 사용되면 어떻게 될까요? php .ini 파일에서 Register_globals 지시문을 on으로 설정하면 PHP는 $GLOBAL 배열에 ENVIRONMENT, GET, POST, COOLIE 및 SERVER와 같은 변수를 저장합니다. 이는 사용자가 설정한 내용을 기반으로 합니다. 이 문제는 php.ini에서 Variable_order 옵션을 설정하여 변수 내용을 특정 순서로 다시 조정하면 해결됩니다. 후자가 전자를 대체하므로 기본 "EGPCS" 값을 사용하면 POST가 GET을 대체하고 COOKIE가 POST를 대체합니다. 이 파일의 문자 순서를 적절하게 조정하여 대체 순서를 제어할 수 있습니다. Register_globals를 끄고 PHP의 새로운 슈퍼 전역 배열을 사용하는 것이 더 좋습니다. 이에 대해서는 다음 섹션에서 다루겠습니다. <br/><br/>PHP의 변수 처리 <br/><br/>PHP는 개발자가 매우 편리하지만 (이론적으로는) 다소 복잡한 디자인을 사용하기로 결정했기 때문에 데이터 전달에 매우 효율적입니다. GET 또는 POST 메소드를 사용하여 데이터 세트를 제출할 때 PHP는 새 페이지에 변수를 자동으로 눈에 보이지 않게 지정합니다. 대부분의 다른 프로그래밍 언어에서는 프로그래머가 페이지에서 명시적으로 지정된 처리를 수행할 수 있습니다. 사양을 잊어버리거나 잘못 작성하면 해당 정보가 처리 에이전트로 전달되지 않습니다. 이에 비해 PHP는 더 빠르고 간단하며 더 완벽합니다. <br/><br/>그러나 이러한 자동 변수 지정으로 인해 항상 각 INPUT 제어 항목에 대해 좋은 NAME 속성을 얻어야 합니다. 실제로 HTML에서는 NAME 속성이 없어도 양식이 계속 작동할 수 있습니다. , 그러나 이러한 HTML의 NAME 양식 필드 속성은 양식 핸들러의 변수 이름이 되기 때문에 데이터에는 기능이 없습니다. <br/><br/>즉, 다음과 같은 형식입니다. <br/><br/>< FORM ACTION = "< ?php echo $_SERVER['PHP_SELF']; ? >" METHOD = "POST" ><br/><br/>< INPUT TYPE="text" NAME="email" ;<br/><br/>< INPUT TYPE="submit" NAME="Submit" VALUE="Send" ><br/><br/>< /FORM ><br/><br/>이메일 텍스트 필드는 양식이 전송될 때 PHP가 $_OPET['email'] 변수(또는 이전 스타일 배열 변수를 사용하는 경우 $HTTP_POST_VARS['email'], 또는 Register_globals를 활성화하는 경우 $email)를 생성하도록 합니다. 마찬가지로 예, 보내기 버튼을 누르면 다음 웹 페이지에서 $_POST ['submit'] 변수가 생성됩니다. HTML 양식에서 사용하는 이름은 PHP 양식 처리를 위한 변수 양식 필드가 됩니다. <br/><br/>HTML 양식을 생성할 때 기억해야 할 또 다른 사항은 양식을 작성하기 전에 초기 텍스트를 표시하려면 VALUE 속성을 설정해야 한다는 것입니다. 이는 두 가지 유형의 양식에 특히 유용합니다. 후자는 입력 오류가 발생할 때 양식을 다시 표시해야 할 때 종종 발생합니다. 예를 들어, 로그인에 사용된 양식은 사용될 때까지 양식에 입력되지 않습니다. 유효한 이메일 주소나 기타 관련 정보가 전송될 수 있습니다. <br/><br/>예를 들어, 다음 양식(연금 스프레드시트로 사용됨)은 사용자가 정보를 입력할 때마다 이전에 입력한 정보가 여러 번 전송되도록 설계되었습니다. 스크랩 자료는 자동으로 채워집니다. 다음 프로그램 예시에서 양식 필드의 VALUE 속성에 주의하세요. <br/><br/>< HTML ><br/><br/>< HEAD ><br/><br/>< TITLE >포스트 예: 퇴직금 워크시트<<br/><br/>< 스타일 유형 = “text.css” ><br/><br/>< !- -<br/><br/>BODY {글꼴 크기:14pt}<br/><br/>.heading {글꼴 크기 :18pt;색상:빨간색}<br/><br/>--><br/><br/>< /STYLE ><br/><br/>< /HEAD ><br/><br/>< php<br/><br/>//이 테스트는 아래 양식의 제출 버튼 값과 함께<br/><br/>//양식이 처음으로 렌더링되는지 확인합니다<br/><br/>//(이 경우 기본 연간 이득만 표시됩니다<br/><br/>//채워짐)<br/><br/>If (!IsSet($_POST[′Submit?])||$_POST [′제출?]!=′계산하시겠습니까?){<br/><br/>$_POST['CurrentAge'] = "";<br/><br/>$_POST['RetieAge']= "";<br/><br/>$_POST['Contrib'] = ""; <br/><br/>$Total = 7; <br/><br/>}else{<br/><br/>$AnnGain = $_POST['AnnGain']; <br/><br/>$Years = $_POST['RetireAge'] - $_POST['CurrentAge'] <br/><br/>$YearCount = 0 <br/><br/>$Total = $_POST['Countrib '];<br/><br/>동안($YearCount<= $연){<br/><br/>$Total = round($Total *(1.0 + $AnnGain/100)+$_POST['Contrib']) ;<br/><br/>$YearCount = $YearCount+1;<br/><br/>}<br/><br/>}<br/><br/>? ><br/><br/>< 🎜><br/>< BIV ALIGN = CENTER ID = Divl 클래스 = 제목 >A 퇴직 – ​​저축 계산기<br/><br/>< /DIV ><br/><br/>< > 모든 값("Nest Egg" 제외)을 입력하고 다양한 시나리오에서 은퇴에 필요한 금액을 확인하세요. 값을 변경하고 원하는 만큼 양식을 다시 제출할 수 있습니다. 두 개의 "연령" 변수를 입력합니다. "연간 수익률" 변수에는 기본 인플레이션 조정 값(7% = 8% 성장 - 1% 인플레이션)이 있으며 이는 더 큰 낙관론이나 비관론을 반영하도록 변경할 수 있습니다.< ><br/><br/>< FORM ACTIIN = “” METHOD="POST" ><br/><br/>< P >현재 나이:< INPUT TYPE="text" SIZE= 5 "CurrentAge" VALUE = "" ><br/><br/>< ?php echo $_POST['RetireAge'];?” ><br/><br/>< 〈 INPUT TYPE="text" SIZE=15 NAME="Contrib" VALUE= " < ?php echo $_POST[?Contrib?]; ? > " ><br/><br/>< P > : < 입력 유형==“text”SIZE=15 AnnGain ”< ? php echo $annGain ” > ><br/><br/>< P >< B > ;NEST EGG< /B >:< ?php ECHO $Total;? ><br/><br/>< P > 입력 유형=“제출” NAME=“제출” VALUE=“계산” > ;<br/><br/>< /FORM ><br/><br/>< /BODY ><br/><br/>< /HTML ><br/><br/><br/>그림 9-1 위 프로그램의 결과를 표시합니다.<br/><br/><br/><br/><p>그림 9-1: 메소드와 VALUE 속성을 사용한 폼 <br/><br/><br/>폼 및 폼 처리 강화 <br/><br/>위 프로그램에서 볼 수 있듯이 일반적으로 HTML 폼과 폼은 동일한 프로그램에 핸들러를 추가하는 것이 더 쉽습니다. 예를 들어, 로그인에 실패하면 로그인 페이지에 오류 메시지가 표시됩니다. 양식 작업을 향상시키면 그러한 메커니즘을 사용하지 않고도 표시를 더 쉽게 제어할 수 있습니다. <br/><br/>폼을 강화할 때는 폼이 표시되기 전에 폼 핸들러가 먼저 나타나야 하기 때문에 폼을 먼저 디자인한 뒤 핸들러를 뒤집어야 한다고 생각하는 분들도 계시겠지만, 여기까지 따라오시면, 논리를 이해하게 되며, 양식을 표시하기 전에 먼저 변수 이름을 지정하고 선택을 할 수 있도록 해야 합니다. 이는 어떤 경우에는 헤더() 함수를 사용하여 사용자를 다른 웹 페이지로 안내해야 하는 경우에 유용합니다. , 이는 HTML 출력이 브라우저에 표시되기 전에 이 결정을 내려야 하기 때문입니다. <p> 위 내용은 PHP 학습가이드 9장의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요! <br/><p><br/></style>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.