야매강좌 php9강 : POST전송과 입력검사
POST전송에 대해서 계속 배워보겠습니다.
(1) 준비과정
잊지 않으셨겠죠? APMSETUP Monitor 를 실행해서 Apache와 MySQL을 켜둡시다.
(2) 주석(주석문)이 뭘까?
참고삼아서 써두는 글을 주석이라고 합니다. 막상 프로그램이 돌아갈 때 아무 영향도 미치지 않는 글이죠.
앞으로 주석을 이용해서 설명을 해보고자 합니다.
// <- 이렇게 슬래쉬 2개 뒤에 글을 쓰면 주석문이 됩니다. 보통 초록색으로 표시합니다.
(3) 오늘 배울 것
7강에서는 한 쪽 php파일의 문자열을 포스트로 보내고, 다른 쪽 php 파일에서 받아보는 걸 했습니다.
이번에도 비슷합니다. 다만 입력검사를 해보겠습니다. 문자열에 공백이 있는지, 길이는 적절한지, 영문자 및 숫자로 쓰여졌는지 알아보는거죠.
입력검사는 두 가지로 합니다. 하나, 자바스크립트, 둘, php.
(4) Get1.php
Get1.php 파일을 코딩해봅시다. 코딩한다는 건 그냥 쓴다는 겁니다. 프로그래밍을 배우기 전까진 뭐 있어보이는 단어라 생각했겠지만 그 뿐이죠.
여기선 자바스크립트란 걸 배울겁니다. 자바스크립트도 프로그래밍 언어입니다. 주절주절 설명하자면 길지만 좀 유명한 언어라고만 알아둡시다.
|
<html> <script language=”JavaScript”> //자바스크립트를 쓰겠다는 겁니다 } }
<body> <form name=’aaa’ method=’post’ action=’result1.php’> //폼 이름은 aaa, 포스트 방식, 결과는 result1.php로! <input type=’button’ value=’글 입력’ onclick=”javascript:check_input();”> //누를경우 check_input 함수 로드 </form> //폼 끝 </body> |
[잠깐!] 함수를 만들고 부른다는 게 뭘까?(함수 생성과 로드)
언어마다 기존의 함수들을 갖고 있죠.
예를 들면 php 함수 중에선 echo. echo는 글자를 출력하는 함수죠.
자바스크립트 함수로는 위에서 본 alert가 있겠네요. 메시지 박스를 띄우는 함수입니다.
하지만 기존 함수 외에 우리도 함수를 만들 수 있습니다.
어떻게요?
</head>와 <body> 사이에 아래와 같이 쓰는거죠.
|
<script language=”JavaScript”> function hamsoo() { alert(‘새로운 함수다!’); alert(‘하하하!’); } </script> |
그리고 body 안에 이런식으로 쓰는 겁니다.
<input type=’button’ value=’클릭’ onclick=”javascript:hamsoo();”>
실행해서 버튼을 클릭하면 메시지가 뜨겠죠? “새로운 함수다! 하하하!” 하고 말이죠. 이게 바로 함수를 만들어서 불러온겁니다. 별거 아니죠.
자주 쓰일 법한 것들을 함수로 만들어 놓으면 편합니다.
(5) result1.php
|
<html> <body>
<? //php 언어를 쓰겠다는 뜻이죠. 참고로 자바스크립트를 쓰는건 <script language=”JavaScript”>였어요 if(!ereg(“([^[:space:]])”, $name)) //ereg는 비교함수인데요. $name이 공백인지 아닌지 비교하는 겁니다 { if(!ereg(“(^[0-9a-zA-Z]{6,8}$)”, $name)) //0-9, a-z, A-Z의 영어 혹은 숫자, 6~8글자인지 비교합니다 </body> |
[잠깐!] ereg란?
ereg는 비교함수입니다. ereg(패턴, 문자열) 의 형식으로 쓰고, 문자열에서 패턴을 찾아봅니다.
즉 ereg(“([^[:space:]])”, $name)) 는 변수 $name에 공백이 있나 없나 보는겁니다.
([^[:space:]])라는게 좀 어려워보이긴 한데 자세히 설명할건 없고 공백이 하나라도 있으면 false값을 나타냅니다.
다만 ereg앞에 느낌표(!)가 붙어있네요. 느낌표는 반대의 의미를 갖습니다. 즉 공백이 하나라도 있을 경우 false가 아니라 true값이 나오게 되죠. 공백이 있으면 -> true -> if 조건 성립 -> if 내용 실행이 되는거죠.
복잡하다고요? 제 생각에도 그렇습니다.
그러니까 그냥 아래 소스를 어딘가에 보관해두면 됩니다.
if(!ereg(“([^[:space:]])”, $변수))
{
//공백있을 경우 실행할 것
}
공백이 있는지 확인할 때 붙여넣기해서 써버리면 되겠네요. 야매좋다는 게 뭡니까.
다음 if(!ereg(“(^[0-9a-zA-Z]{6,8}$)”, $name))도 마찬가지입니다.
영문자 혹은 숫자는 [0-9a-zA-Z]가 표현하고, {6,8}은 6자에서 8자라는 의미입니다.
많이 알면 다칩니다.
[잠깐!] exit란?
exit는 그 자리에서 문서를 빠져나갑니다. 그 줄에서 멈춘다는 얘깁니다.
만약 exit가 없다면 그 아래 줄을 전부 실행할 게 분명합니다.
(6) 실행해본다
실행해봅니다. get1.php와 result1.php 모두 C:\APM_Setup\htdocs 에 저장해두셨겠죠.
아시겠지만 해당 폴더에서 실행하면 안됩니다.
반드시 http://localhost/get1.php 으로 실행하시기 바랍니다.