PHP Exploring POST vs. GET and Validating form data using JavaScript

다음은 indexphp입니다

(예제에서는 suggestInputhtml이됩니다) 우리에게는 양식이 있습니다 우리는 두 개의 텍스트 필드를 갖게 될 것입니다 시각적 예제에는 텍스트가 아닌 여러 유형의 필드가 있습니다

그래서, txtName txtEmail 제출 버튼

만약 내가 method = "post" 양식 필드와 그 값은 어떻게 서버에 전달됩니까? 은유는 무엇입니까? 가방! 그래서 요청은 가치를 취할 것입니다 각 분야의 제출 버튼, 우리가 지난 주에 그것을 발견했기 때문에, 그것은 <form> 내부의 모든 것의 가치를 취할 것입니다 그것을 서버로 보냅니다 그래서 저는 서버 측 코드를 표시 할 것입니다 이 정보를 어떻게 얻을 수 있을까요? 요청의? 우리는 어떻게 그것을 "여행 가방"에서 꺼내 죠? 예, POST 방법을 사용합니다

자, 만약 $ _ [ "txtName"]이 (가) 비어 있습니까? 서버에서 무슨 일이 벌어 질까요? 그것은 추락 할 것입니다 PHP 프로그램은 "변수가 없습니다!"라고 말할 것입니다 지난 주에 어떤 방법을 사용하여 테스트했는지 알아 보았습니다 txtName이라는 POST "가방"안에 뭔가가 있는지 확인하려면? [학생] isset ()을 사용하십시오 [Peter] 그래서 우리는 isset ()을 사용할 것입니다

프로그램의 서버쪽에있는 PHP 내부 그리고 우리는 isset ($ _POST [ "txtName"])) if 또는 값을 가져 오려는 양식 필드의 이름을 지정하십시오 그것이 사실이라면 왜 변수를 설정하지 않습니까? 그래서 우리는 "txtName에 뭔가가 있다면 " "그런 다음 $ txtName 변수에 저장하십시오 그런 다음 나머지 변수를 통해 해당 변수를 모두 사용할 수 있습니다 거기에 아무것도 없다면? 우리 else 절에 무엇이 들어 갈까요? 우리 뭐 할까? (저는 제임스에게 그 것을 다시 보낼 것입니다) 요청 웹 페이지가 나에게 아무 것도 보내지 않으면 어떻게해야합니까? 나는 떠날 수 없다 그것은 깨질 것이기 때문입니다

[학생] 오류 메시지를 표시 하시겠습니까? 글쎄, 난 할 수 없어 웹 작업을하고 오류 메시지를 보내지 않으므로 오류 메시지를 표시하십시오 다시 사용자에게 왜 내가 그걸 무언가로 설정하지 그래? 그래서, "=" 양식 페이지에서 아무 것도 얻지 못하면이 변수에 일종의 메시지를 넣으십시오 나는 "알지 못함"을 가장 우호적 인 것으로 말할 것입니다

(이 코드 예에서는 "가장 좋아하는 사용자"를 사용합니다) 그러나 적어도 변수에 무언가를 할당하고 있습니다 그러면 프로그램이 중단되지 않습니다 이 변수를 직접 사용하면 변수가 비어있는 경우 프로그램이 중단됩니다 이제 다른 질문은 JavaScript에 관한 것입니다

여기 (클라이언트 측 HTML 코드에서) 제출 버튼을 클릭하십시오 우리는 여기에 와서 다음을 추가합니다 : onclick = " onclick = "return validate ();" 그래서, 내 <script> 요소에서 <head> 나는 validate () 함수를 가질 것이다 그리고 우리는 무엇을 시험 할 것인가? if txtNamevalue = = ""(공백 따옴표 – 공백이 없습니다!) 너는 무엇 할거니? 경고 ( "귀하의 이름을 입력하십시오"); 그런 다음 암호 및 다른 필드에 대해 다른 if 문을 추가합니다 그래서 우리는이 스크립트를 제자리에두고 있습니다

그래서 당신은 이것이 할 수 없다는 것을 알고 있습니다 우리의 행동 (이 중 하나가 비어 있으면 validate () 함수는 false를 반환하기 때문에이 텍스트 필드에 무언가가 존재하지 않는 한) 다시 서버로 왜 우리는 isset ()이 필요합니까? 제임스, 우리가 휴식 시간에 이것에 대해 이야기했기 때문에 대답 해 드리겠습니다 그것이 설정되어 있는지 확인하십시오

맞았 어 근데, 우리가 그것을 설정했는지 확인 했어 우리는 자바 스크립트로 그걸 확인했다 그들은 JavaScript를 사용하지 않았을 수 있습니다 아, 네, 그들은 JavaScript를 사용하지 않았습니다

사람들의 20 %가 선회하고 있습니다 브라우저에서 자바 스크립트가 사용 중지되었습니다 따라서 사용자의 20 % 이 자바 스크립트를 모두 무시할 수 있습니다 테스트 따라서 서버에서 특정 내용을 확인하는 방법입니다

각 변수에 대해 값이 있음을 나타냅니다 이제 여기 (클라이언트 측에서) 당신은 경고 ()를하고 즉시 사용자에게 말할 수 있습니다 그런 다음 할 수 있습니다 txtNamefocus () 비어있는 입력란에 사용자를 다시 넣을 수 있습니다

그래서, 당신은 "이봐, 너 비워 놨어"라는 팝업을 할 수있다 그 자리에 커서를 이동 시키면 즉시 입력 할 수 있습니다 하지만 자바 스크립트를 사용하지 않으면 제출 버튼을 클릭하여 여기에 올 수 있습니다 (서버에서) 값이 비어있을 수 있습니다

따라서 서버 측의 isset ()을 사용하여 여전히 두 번 확인하십시오 그 무늬가 보이니? 이중 수표가 보이니? 우리는 $ _POST []를 사용하여 txtName 값을 얻습니다 양식 요청에서 암호 또는 다른 텍스트 필드를 가져 오기 위해 사용하는 것은 무엇입니까? 둘 다 $ _POST []를 사용하십시오 우리는 $ _GET [}를 무엇을 위해 사용할 것인가? [학생] URL을 사용하거나 요청이 어디에서 왔는지를 알고 싶습니다 네, 그래서 우리가 무엇을하려고할까요

그냥 말하는 대신 action = "suggestResponsephp"파일 이름을 우리는 수동으로 여기에 집어 넣을 것입니다 (행동 값의 끝에서) ? source = suggestInput

php 그래서, 여기이게 뭐야? (예제에서 파란색 밑줄이 그어진 코드) 이것은 내 GET 데이터가 될 것입니다 이러한 txtName, txtEmail, optGender, selAgeRange 및 btnSubmit이 내 POST 데이터가됩니다 동시에 두 곳 (POST와 GET)을 할 수있는 곳을 알고 있습니까? 우리가 사용하는 방법은 무엇입니까? method = "POST"우리는 이 필드 값은 패킷 또는 가방으로 서버에 전송됩니다 이 경우 GET은 수동으로 추가됩니다

방법을 설정했다면 "GET"은 어떻게 되었을까요? txtName, txtEmail, optGender, selAgeRange 및 btnSubmit 값을 사용합니다 action = ""속성에 나열된 파일 이름에 추가하십시오 우리가 여기 서버 측에 왔을 때 어떤 일이 벌어 질 것입니까? $ _POST []를 사용하는 대신 $ _GET []을 사용합니다 여기 $ _POST []를 사용하여 txtName을 사용했습니다 어떤 것 서버 측에서 $ _GET []이라면 사용합니다

[학생] 나도 몰라 같은 일 $ _ post []와 $ _get []는 모두 양식 필드 id와 그 값을 취합니다 그래서, 그것은 프로그램이 "가방"에 무엇을 집어 넣었는지, 그리고 일단 $ _post [] 배열로 읽어 들인 것이 서버에 도착하면 어떻게되는지를 알 수 있습니다 그래서, 모든 사람들이 $ _POST []가 어떻게 배열인지 이해할 수 있습니까? [학생] 집에 갈 때 헤어지 죠

글쎄, 내가 너에게 말할거야 그 사람이 양식의 제출 버튼 클릭 다음 양식에 항목은 각 양식 항목의 이름을 취합니다 이것이 변수의 이름입니다 (사용자가 입력 한) 가치를 취하고 그것을 끌어 올립니다 값으로 그것이 서버에 올 때

서버가 PHP 코드를 실행하기 전에 서버가 수행하는 작업 POST 패킷 (가방)이 열려 있습니다 $ _POST []라는 배열을 만듭니다 그 배열의 이름을 지정하는 대신 인덱스는 0, 1, 2 등을 사용합니다

우리가 익숙해 진 것처럼, 배열을 좋아한다는 것을 배웠던 것처럼, 그것은 "txtName" 사용자가 입력 한 내용이 무엇이든 "피터"또는 "테스터 1"이라고 가정 해 봅시다 서버는 그것을 배열의 값 부분에 넣습니다 따라서 txtName은 배열의 인덱스입니다 "테스터 1"은 해당 색인과 관련된 값입니다 $ _POST []와 $ _GET []는 연관된 배열이라고 불립니다

다음 주에 우리가 배열을 공부할 때 당신은 그 사람들에게 갈 것입니다 POST가 서버에 오면이 배열 $ _POST [] 자동으로 작성되며 이것이 정보에 액세스하는 방법입니다 코드는 $ _POST [] 배열에서 'txtName'을 찾고 'txtName'과 연결된 결과 또는 값은 "Peter"또는 "Tester 1"이거나 사용자가 양식에 입력 한 값입니다 [Student] $ _POST []는 다른 데이터 타입을 사용할 수 있습니까? 네, 그리고 그것은 모두 자동입니다 당신은 그것에 대해 걱정할 필요가 없습니다

(편집자 : 자동이 아니며 항상 문자열입니다) [Reed] 일부 GET을 위해, 그것은 실제로 되돌아 갔다 그 문서에서 바로 ?? 알았어? [피터] 아니, GET에서 어떻게되는지, 가져 가라 데이터가 URL 요청에서 제거되고 $ _GET [] 배열은 이것과 같습니다 따라서 우리의 $ _GET [] 배열에는 "suggestInput

php"값을 가진 "source"의 인덱스가 포함되어 있습니다 그리고 이것은 $ _GET []입니다 거기에는 단 하나의 것이 있습니다 'source'(배열 색인) 그 값은 "suggestInputphp"가 될 것입니다

바로 그 배열이 될 것입니다 그것은 하나의 요소 배열이 될 것입니다 그들은 왜 이것을 배열로 만들었습니까? 글쎄, 그들은 당신이가는 것이 얼마나 많은 것들 (양식 필드)을 알지 못합니다 귀하의 양식에 가지고, 그래서 그들은 모두 그들을 쌓을 수있는 배열을 사용합니다 내가 여기서 다시 클라이언트로 가자

우리가 이 메쏘드를 method = "post"로 변경하고 "get" 서버 측에서 우리 배열은 어떻게 생겼을까요? 이 양식 필드 이름과 값이 끝날 때마다 단일 get이됩니다 그런 다음 코드에서 코드를 작성, $ _GET [그리고 원하는 항목] 명백합니까? [Reed] 예, 예 그러나, 그들은 정말로 비슷하게 보입니다 음, 그들은 그렇습니다 GET과 POST 간의 유일한 차이점 데이터가 전송되는 방법입니다

GET 배너를 만들고 URL 요청이 끝나면 서버로 보내고 있습니다 모두가 읽을 수있는 비행기 뒷편에 배너는 특정 길이 일 수 있습니다 POST를 사용하여 데이터를 개인용 가방에 넣습니다 그것을 서버에 보냅니다

같은 결과가 발생합니다 포장을 풀고 배열에 넣어도되지만 아무 것도 없습니다 POST의 내용에 대한 실제 제한 우리는 그것을 큰 가방으로 만들 수있다 그러나 당신은 보았습니다, 그 배너의 은유 비행기 뒤에

GET을 사용하면 방금 말하고있는 것입니다 하늘을 가로 지르는 모든 것 [학생] 거의 모든 것이 끝났습니다 URL 정확 하네

[학생] 그래서, 진짜는 무엇입니까? 다음 GET 사용의 이점? 쉽고 빠릅니다 당신은 정말로 빨리 붙일 수 있습니다 [다른 학생] 아마존 등에 가면 당신은 페이지를보고 있으며 링크를 누군가에게 이메일로 보내고 싶다면 그것을 볼 수없는 POST라면 그 URL 네, 독특한 것은 아닙니다 지금, 이것은 토론에서 약간 점프입니다, 그러나 SEO (검색 엔진 최적화)에서는 GETS가 모두 제거됩니다

SEO의 경우 GETS가 모두 해제되므로 GETS를 사용하여 내 페이지에있는 것들에 대한 참조 세트를 가져라 목록에 올라 있지는 않지만 검색 엔진에 나타나지 않습니다 그래서, 얻는 것이 부탁에서 벗어나기 때문에 POST는 모든 사용자에게 고유 한 주소를 제공합니다 웹 페이지 그러나 다시, 그것은 달려있다

아, 평면 스크류 드라이버와 필립 스크루 드라이버가 있습니다 필립 헤드 스크류 드라이버는 몇 가지 종류가 있습니까? 나는 내 비트를 바른 나사에 영원히 매치시키고있다 내가 잘 맞는 지 확인하기 이것은 그 종류의 것입니다 가장 적합한 공구인가요? 잠시 후 당신은 그것의 느낌을 갖습니다

자, 내 개인적인 경향 POST로 이동하는 것입니다 나는 항상 POST를 사용했습니다 난 그냥 해요 그렇게 프로그램하는 경향이있다 나는 다른 프로그래머를 안다 GETS로 모든 것을 수행합니다

[학생] 만약 당신이 신경 쓰지 않는다고 생각합니다 URL의 모든 것 어떤 페이지에서 왔는지 알고 싶다면 네 그리고 누군가가 정말로 당신에게 정보를 원한다면 패킷 스니퍼 사용 그러면 그들은 '가방'을보고 당신의 POSTS를 볼 수 있습니다

그래서, 그것은 매우 안전하지 않습니다 너무 넓지도 않고 못생긴 것도 아닙니다 GET URL은 꽤 추악해질 수 있습니다 Amazoncom 또는 Wikipedia

com이 좋은 예입니다 검색을 수행하면 URL이 매우 길어지고 복잡해질 수 있습니다 자, 검색 및 물건, 괜찮아요 그러나 누군가 URL을 보내려는 경우 URL을 짧고 짧게 유지하려고합니다 그것은 모든 사람을 위해이 모든 것들을 분명히 해줍니까? 다시 말하지만, 정말 엉성한 JavaScript를 작성했습니다

코드를 그냥 기억에 남겨주세요 다시 그러나 웹에서 나가거나 프로그래밍 기초에서 노트를보십시오 보다 자세한 코드를 사용하여이를 수행하는 방법을 찾아보십시오 거기에 완전한 코드를 작성하십시오

당신은이 기능들을 가져야한다 프로그래밍 기본 사항 프로젝트 작업 그리고, 만약 당신이 글을 쓰면 그때 좋은 코드 였고, 나는 마지막 수업에서 그 당시에 그렇게하는 법을 이미 배웠습니다 1 년 전에 제작 한 코드를 꺼내어 닦으십시오 몇 년 전 (아마 당신이 아마 :-)하지 않았던 것처럼 약간의 코멘트를 덧붙여 라 마지막 수업에서 작성한 것과 동일한 코드를 활용하십시오

[학생] 우리 양식에서 PHP 버튼을 어떻게 호출합니까? [Peter] <form> 요소에 action = ""속성을 설정하여 자동으로 그렇게합니다 따라서 제출 버튼이 아닌 일반 버튼으로 설정하면, 사용자가 제출 버튼을 클릭하면 그것은 자동으로 그렇게 할 것입니다 버튼에서 onclick = ""이벤트를 사용하면 우선 순위가 지정됩니다 action = ""속성 이상 그래서, 사람이 제출을 클릭하면 그들은 onclick = ""을 치고, 웹 페이지는 JavaScript 함수를 먼저 수행 할 것입니다 함수가 true로 돌아 오면 action = ""속성이 사용되며 해당 URL은 서버에 요청으로 전송됩니다

JavaScript 함수가 False를 반환하면 프로세스가 중지됩니다 action = ""URL은 전송되지 않습니다 끝