7 장. 실용적인 PHP 데이타통신특론 김태영교수님 홍창의
IDE_ 프로그램 편집기 phpDesigner 8 설치 Comedudb4.knue.ac.kr/test03 실습 준비
Contents… 1.printf : 자리수 설정, 문자열채우기, sprintf 2. 날짜와 시간 함수 : 날짜 상수, checkdate 3. 파일 처리 : 검사, 생성, 읽기, 복사, 이동, 삭제, 갱신, 잠금, 전체 파일 읽기, 파일 업로드, 시스템 콜 4.XHTML : 장점, 버전, HTML 과의 차이, HTML 4.01 문 서, XHTML 1.0 문서, XHTML 검증 차 례차 례
1) 문자열 내에 특별한 구성방식의 문자 삽입 출력된 결과의 포맷 ( 변환타입 ) 을 설정 %d 다른 인자로 교체 가능 { b:2 진수, c: 아스키, e: 과학기수법, f: 부동소수점, o:8 진수, s: 문자열, u:10 진정수, x:16 진수, X: 대문자 16 진수 } printf 1) printf("There are %d items in your basket", 123) 2) printf("My name is %s. I'm %d years old, Which is %b in binary number",'Hong', 46, 46); 3) printf(" Hello ", 65, 127, 245); 4) printf(" Hello ", $r-40, $g-40, $b-40);
2) 자릿수 설정 : 출력된 결과 ( 숫자 ) 의 자릿수 설정 printf The result is $ The result is $ The result is $ The result is $ The result is $##########10.29 The result is $ The result is $ The result is $ The result is $ The result is $##########10.29 Ex) % ’& 15.2f 변환시작 채움문자나 0 문자개수 출력 자릿수 변환인자
3) 문자열 채우기 : 출력된 결과 ( 문자 ) 의 자릿수 설정 printf Ex) % - ’# 8.4 s 변환시작 자리맞춤 채움문자 문자개수 차단값 변환인자 [House] [00000House] [#####House] [ Doctor H] [Doctor ] [House] [00000House] [#####House] [ Doctor H] [Doctor ]
3) sprintf: 출력된 결과를 다른 변수로 변환 printf 6) $hexstring = sprintf("%X %X %X", 65, 127, 245); echo $hexstring; 7) $out = sprintf("The result is: \%.2f", / 12); echo $out; 41 7F F5 The result is: 약 $
1) 타임스탬프 echo time (); “Y2K38 버그 ” 32 비트 정수의 끝 2) Date 함수 : date($format, $timestamp); (p.197 표 7-4 참조 ) 날짜인자 : d, D, I, l 요일인자 월 인자 연도 인자 시간 인자 날짜와 시간 함수 8) echo date(“l F jS, Y – g:ia”, time() ); Wednesday September 26th, :28am
3) 날짜 상수 : 특정한 포맷으로 반환하는 date 함수와 함께 사용 4) Checkdate : 유효한 날짜를 확인하는 유효성 검사 10) 날짜와 시간 함수 9) echo date(DATE_RSS); // RSS 피드용 포맷 echo date(DATE_ATOM); // Atom 피드용 포맷 echo date(DATE_COOKIE); // 웹서버 쿠키용 포맷 echo date(DATE_W3C); // www 컨소시엄의 포맷 Wed, 26 Sep :02: T02:02:24+09:00 Wednesday, 26-Sep-12 02:02:24 JST T02:02:24+09:00
1) 파일이 있는지 검사 2) 파일 생성 : fopen, fwrite 12) 실습 ) testfile.php 저장 실행 testfile.txt 확인 testfile.txt 수정 testfile.php 실행 testfile.txt 확인 fopen 모드를 a, r, r+ 로 수정 파일 처리 : 웹서버의 하드디스크 파일 접근 방법 11) if (file_exists("testfile.txt")) echo "File exists";
3) 파일 읽기 : Fgets- 한 줄, Fread- 여러 줄 or 일부 13) 14) 실습 ) 13) 실행하고 결과 확인 14) 실행하고 결과 확인 파일 처리
4) 파일 복사 : copy 15) 16) 5) 파일 이동 : rename 17) 파일 처리
6) 파일 삭제 : unlink 18) 7) 파일 갱신 : fseek. fwrite 파일에 데이터 추가하는 방법 1) 추가와 쓰기 모드 2) 포인터 이동한 후 쓰기 19) 실습 ) update.php 파일 실행하기 결과 확인하기 Line 1,2,3,2 순으로 파일 내용 갱신하도록 소스 수정하기 SEEK_SET, SEEK_CUR 옵션 사용하 기 파일 처리
8) 다중 접근으로부터 파일 잠금 : flock 서버로부터 동시에 여러 사람이 접근할 때 잠금을 해제할 때 까지 큐에 보관 파일 손상과 이상한 결과값 방지 20) 요령 ) 파일을 변경하기 직전에 잠그고, 그 뒤에 바로 풀기 파일 처리
9) 전체 파일 읽기 : file_get_contents 파일 핸들을 사용하지 않고 전체 파일을 읽을 수 있는 함수 21) 22) 파일 처리
10) 파일 업로드 : file_get_contents 23) 파일 처리
11) $_FILES 24) 파일 처리
12) 검 증 25) 파일 처리
13) 시스템 콜 : exec ( 명령어, 명령어결과 저장배열, 반환변수 ) * escapeshellcmd : 사용자 입력을 받아서 exec 를 호출할 때 명령어 문 자열 검증에 유용 26) 파일 처리
XHTML 은 처리를 어렵게 하는 일관성 없는 내용을 제거해서 HTML 을 개선 HTML 은 꽤 복잡하고 관대한 파서가 필요하나 XHTML 은 단순한 파서 사용 1)XHTML 의 이점 XML 파일을 다룰 수 있는 프로그램은 모두 신속히 처리 가능 아이폰, 블랙베리 같은 다양한 디바이스가 웹 접근이 가능토록 플랫폼을 뛰어넘 은 호환성 HTML 은 곧 XHTML 로 대체될 것이다 2) XHTML 버전 XTML 1.0(XML 문법필요 )/ 1.1( 웹브라우저에 CSS 사용 )/ 1.2( 제안단계 )/ 2.0(HTML4 와 많이 다른 형태 ) XHTML
3) (HTML 과 다른 ) XHTML * 매칭되는 다른 태그로 닫혀야 한다. …… * 정확한 계층을 이루어야 한다. 내 이름은 로빈 내 이름은 로빈 * 태그의 속성은 작은 ( 큰 ) 따옴표로 감싸야 한다. * & 문자는 혼자 쓸 수 없다. * 태그는 모두 대소문자를 구분하고 소문자만 사용한다, * 속성은 더 이상 축소될 수 없다. * 첫줄에 로 시작 XHTML
4) HTML 4.01 문서 유형 2) XHTML 1.0 문서 유형 3) XHTML 검증 XHTML
2. 기본 문법 1) 세미콜론으로 끝난다. 2) 모든 변수 앞에 $ 심볼을 붙여야 한다. 숫자 / 문자 / 배열이든 상관없다.
3. 변수의 이해 1) 문자열 변수 2) 숫자 변수 $count = 17; 3) 배열 $team=array(‘Hong’, ’Choi’, ’Jeon’, ‘Song’) ; echo $team[2] ;
3. 변수의 이해 4) 2 차원 배열 1 행, 엘리먼트 (1,2,3) 2 행, 엘리먼트 (1,2,3) 3 행, 엘리먼트 (1,2,3) 5) 변수 이름 규칙 1) 시작은 알파벳이나 밑줄 / 2) 이름에는 알파벳 대소, 숫자, 밑줄만 사용 / 3) 공백불가 / 4) 대소문자 구분
4. 연산자 1) 산술 연산자 수학식을 연산 (p.77 표 3-1 참조 ) +: 더하기 -: 빼기 *: 곱하기 /: 나누기 %: 모듈러스 ++:1 증가 --:1 감소 2) 대입 연산자 값을 변수에 할당 (p.77 표 3-2 참조 ) 예 ) $count += 1; $count = $count + 1; 3) 비교 연산자 두 아이템을 비교하는데 사용 (p.77 표 3-3 참조 ) 예 ) $singleno = 5( 대입 ) vs $singleno == 5( 비교 ) 4) 논리 연산자 두 비교연산자의 결과를 합치기 위하여 or 다른 비교연산자의 입력 사용 (p.77 표 3-4 참조 ) 예 1) If ($hour > 12 && $hour < 14) dolunch ( ) ; 예 2) $ingredient = $ammonia xor $bleach
5. 변수 대입 문법 : 변수 = 값 1) 변수증가와 감소 예 1) if (++$x == 10) echo $x; 변수값을 검사한 후에 증가 예 2) if ($y-- == 10) echo $y; if 문을 확인한 후 감소 2) 문자열 연결 예 1) echo “You have”. $mags. “messages.”; You have 5 messages. 예 2) $bulletin.= $newsflash; 두 문자열을 모두 연결
5. 변수 대입 3) 문자열 타입 예 1) $info=‘Preface variables with a $ like this: $variable’; 모든 문자가 $info 에 대입 예 2) echo=“There have been $count presidents or the US”; 문자열 내의 $count 변수의 값이 대입 4) 이스케이프 문자 ( 잘못 해석될 수 있는 특별한 의미의 문 자를 표기하는 방법 ) 예 1) $text = ‘My sister’s car is a Ford’ ; $text = ‘My sister \ ’s car is a Ford’ ; 예 2) $heading = “Date \ tName \ tPayment”; 특수문자는 문자열 내 에 추가할 수 있다.( 탭, 새줄, 복귀 ) 단, 반드시 큰타옴표 (“ “) 사용
6. 다중 라인 명령어 (heredoc) <<<_End ~~ _End;
7. 변수 입력 1) 변수 선언의 의무없이 PHP 에서 요구하는 형식으로 자동 변환됨 ( 느슨한 언어 (?)) 2) 문자열과 숫자의 자동 변환의 예 * 숫자에서 문자로 … 결과값 : ( 에서 ) 1 * 문자에서 숫자로 결과값 :
8. 상 수 1) 의미 : 정보를 나중에 돌려준다. 한번 정의하면 프로그램 이 끝날때까지 변할 수 없다. 2) 사용 예 define(“ROOT_LOCATION”, “user/local/www/” ); $directory = ROOT_LOCATION; 3) 주의할 점 - $ 표시를 앞에 붙이지 않는다 - define 함수만 사용할 수 있다. 4) 미리 정의된 함수 ( 매직 상수 ) - 형식 : _~_ 형태 (p.87 표 3-5 참조 ) - 사용 예 : echo “This is line”. _LINE_. “of file”. _FILE_;
9. echo & print 1) 의미 - print 는 매개변수를 취하는 실제함수이며 - echo 는 PHP 언어의 구조에 포함 2) 처리 속도 - 일반텍스트 출력이 echo 가 다소 빠름 3) 특징 ( 사용 예 ) - echo 는 복잡한 표현에는 사용 불가 - 예 ) sb ? print “TRUE” : print “FALSE” ; 변수의 값이 참인지 거짓인지를 출력..
10. 함 수 1) 특정 task 를 실행하는 코드를 섹션으로 나누는데 사용 2) 반복적인 코드 대신 함수를 사용하는 이점 - 코드가 간단해진다 / - 변경이 용이하다 - 소스코드의 크기가 작아진다. - 가독성이 높아진다. - 함수를 부른 코드로 값을 돌려줄 수도 있다. 3) 함수의 정의 echo longdate(time( ) ) ; echo longdate(time( ) – 17 * 24 * 60 * 60) ; 17 일간의 초를 뺀 값을 longdate 함수에 전달
11. 변수 범위 1) 지역 변수 함수내에서만 정의되어 사용하는 변수 함수가 반환 전에 처리된 일부 결과를 저장하려고 만든 임시 변수 매개변수 매개변수의 확장
11. 변수 범위 2) 변수 범위의 효과 로컬범위에서 해결 $temp 에 접근 실패 매개변수로 전달
11. 변수 범위 2) 전역 변수 - 모든 코드에서 변수에 접근이 필요 - global 키워드사용 global $is_logged_in ; - 확실히 원하는 결과를 얻기 위한 방법을 찾을 수 없을 때만 사용 - 지역변수로 사용하는 오류 발생 가능
11. 변수 범위 3) 고정 변수 - 다음 번에 함수가 호출될 때 그 값을 유지하고 싶은 지역변 수가 있을 경우 사용 - 표현식의 결과를 대입하는 일은 불가능
11. 변수 범위 4) 슈퍼 전역 변수 - PHP 의 환경에서 제공되지만 프로그램 내에서 전역이며 어 디서든지 접근이 가능 - 슈퍼 전역 변수. 배열로 이루어짐 (p.94 표 3-6 참조 ) $came_from = $_SERVER[‘HTTP_REFERRER’] ; 5) 슈퍼 전역 변수와 보안 $came_from = htmlentities($_SERVER[‘HTTP_REFERRER’]);