PHP(HyperText Preprocessor)
PHP는 라스무스 러도프라는 사람이 1995년에 설계한 ASP(MS), JSP(Java) 등과 같이 웹 프로그래밍을 위한 언어로써 누구나 무료로 사용할 수 있으며, 가볍고 실행 속도가 빠르고, C 언어와 유사한 문법체계를 가지고 있어서 현재까지도 널리 사용된다. Java 계열에서의 JSP와 같은 역할이다.
PHP는 웹에서 작동되기 때문에 웹의 기본인 HTML과 연동되어서 동작된다. HTML 안에 PHP 구문이 들어가서 PHP 프로그램의 결과가 HTML에 반영되는 프로세스이다. 1994년 만든 이래 계속 버전이 올라가고 있는데 PHP 5.0대를 사용하면 최신의 API에서도 별 무리가 없다.
Windows에서 실행하려면 APMsetup7.exe를 실행시켜서 Apache setup, MySQL setup, ... 등이 있으므로 실행시키기만 하면 된다.
Linux에서 실행하려면 APM(apache + PHP + MySQL)을 설치해야 한다.
웹 페이지를 기술하는데 사용되는 기본적인 프로그래밍 언어는 HTML(HyperText Markup Language)이다. 하지만 HTML만으로는 항상 똑같은 내용을 보여주는 정적인 페이지여서 방문자 카운터나 게시판과 같이 상황에 따라 내용이 동적으로 변하는 페이지를 만들 수 없다. 이런 문제를 해결하기 위해서 웹 서버에 페이지 요청이 올 때마다 웹 페이지에 표시될 동적인 내용을 반영해주는 프로그래밍 기법을 사용해서 동적인 페이지를 표시해주는 것을 웹 프로그램이라고 한다. 여기에 사용되는 프로그래밍 언어를 웹 프로그램이라고 하며 ASP(Windows 계열), PHP(공통), JSP(Java 계열, UNIX/Linux) 등이 있다.
HTML로 작성된 웹 프로그램은
① 사용자가 웹브라우저의 주소창에 URL을 입력하고 엔터하면, 웹브라우저는 URL에서 서버의 주소 부분과 서버에게 요청할 문서의 이름을 분리해 낸다. 예를 들어 클라이언트가 http://php.net/a.html을 웹브라우저에 입력하면 웹 서버 주소는 php.net이고 요청하는 문서는 a.html이다.
② 클라이언트 웹브라우저는 인터넷을 통해서 php.net 서버에게 a.html 문서를 꺼내 달라고 요청하는 것이다.
③ 이 요청은 웹 서버 컴퓨터에게 전달되어서 웹 서버 소프트웨어가 요청된 HTML 문서인 a.html 문서를 꺼내서 인터넷을 통해서 클라이언트에게 전송한다.
④ a.html을 수신한 클라이언트 웹브라우저는 이 HTML 문서를 해석해서 클라이언트의 웹브라우저 화면에 출력한다. 전송되어 온 a.html 문서의 해석은 전적으로 클라이언트의 웹브라우저에 달려 있다. 서버가 보내온 음악 파일의 코덱을 클라이언트 뮤직 플레이어가 해석하지 못하면 들을 수 없는 경우와 같다.
PHP 등의 언어로 작성된 웹 프로그램이 처리되는 과정도 이와 유사한데 단지 프로그램이 실행되는 단계만 추가될 뿐이다.
① 클라이언트가 웹브라우저의 주소창에 URL을 입력하고 엔터하면, 웹 브라우저는 URL에서 서버의 주소 부분과 서버에게 요청할 문서의 이름을 분리해 낸다. 예를 들어 URL이 http:// php.net/a.php이면 웹 서버 주소 URL은 php.net이고 요청하는 문서는 a.php이다.
② 클라이언트 웹브라우저는 인터넷을 통해서 php.net 서버에게 a.php 문서를 꺼내 달라고 요청한다.
③ 이 요청은 웹 서버 컴퓨터에 전해져서 웹 서버 소프트웨어가 요청된 문서가 HTML이 아니라 PHP이므로 웹 서버 소프트웨어는 이 요청을 직접 처리하지 않고 PHP 엔진에게 전달한다.
④ 요청을 받은 PHP 엔진은 a.php 파일을 찾아서 실행한다.
a.php 파일의 내용이
<?php
echo "안녕?";
?> 이라면 PHP 엔진은 나머지 PHP 소스 코드를 실행한 뒤 그 자리에 PHP의 실행 결과 '안녕?'이라는 문자열만 남겨서 HTML로 웹 서버에 전해지고, 웹 서버는 PHP 결과인 '안녕?'이 들어 있는 HTML 문서를 클라이언트 웹브라우저에게 전송한다.
a.php 파일
<html><body>
<?php
echo "안녕?";
?>
</body></html>
PHP 엔진에서는 PHP가 실행되어 PHP 코드는 삭제되고 '안녕?'이라는 결과만 html 파일안에 남는다.
==>
<html><body>
"안녕?"
</body></html>
⑤ a.php의 실행 결과가 포함된 HTML 문서를 수신한 클라이언트 브라우저는 이것을 화면에 띄운다.
=>결국 웹 브라우저는 HTML 문서만 해석할 수 있다.
ASP, JSP, 그리고 PHP
웹 프로그래밍에서 가장 잘 알려진 것은 ASP, JSP 그리고 PHP 정도인데
▪ ASP(Active Server Page)는 일반 응용 프로그래밍 언어인 (Visual) BASIC을 기반으로 만들어진 엡 프로그래밍 언어이다. MS Windows에서만 작동되는 IIS(Internet Information Service) 웹 서버에서만 이용될 수 있어서 Windows 서버에서만 사용될 수 있다. 최근에는 ASP의 업그레이든 된 버전인 ASP.NET가 주로 사용되고 있다. ASP는 웹 프로그래밍 구동기술(또는 플랫폼)의 이름이면서 그 환경에서 동작하는 프로그래밍 언어이기도 하고, ASP.NET는 플랫폼이다. ASP.NET에서 프로그래밍 언어는 Visual Basic이나 C#으로 작성할 수 있다.
▪ JSP(Java Server Page)는 Java 언어를 기반으로 해서 만들어진 웹 프로그래밍 언어인데 현재 Java가 널리 사용되고 있고 다양한 Java 관련 기술들이 많다는 장점 때문에 많은 웹 사이트들이 JSP로 구축되고 있다. 현재 국내에서도 새롭게 웹 사이트를 구축할 때 가장 많이 사용되는 웹 프로그래밍 언어이다.
▪ PHP(Hypertext PreProcessor)는 C 언어를 기반으로 해서 만들어진 웹 프로그래밍 언어로써 다양한 하드웨어와 운영체제에서 사용될 수 있고 실행 속도도 빠른 편이다. JSP가 나타나기 전까지는 가장 대중적인 웹 프로그래밍 언어였고 현재까지 중소 규모의 웹 사이트 구축에서는 많이 사용되고 있다.
PHP의 특징은
∎ C 또는 Java 언어의 기본 문법과 매우 유사하다 : PHP는 C 언어로 만들어진 것으로 Java 도 C 언어에서 많은 부분을 가져온 것이다. C++의 객체 지향을 제외한 기본적인 문장 구 조나 제어문의 구조가 C와 유사하다.
∎ 무료로 사용할 수 있다 : PHP를 구동하는 PHP 엔진이 오픈소스여서 누구나 무료로 사용 할 수 있다.
∎ 구축된 웹 사이트의 동작 속도가 빠르다 : 성능이 좋은 편이어서 접속자가 많아도 사이트 운영에 큰 문제가 없다.
∎ PHP 엔진은 플랫폼 독립적이다 : Linux/UNIX, 그리고 MS Widows도 지원하므로 어느 플랫폼에서나 사용될 수 있다 등이다.
PHP 프로그램의 기본 형태
확장자가 ~.php라도 그 내용이 모두 PHP 코드로만 되어 있는 것은 아니다. PHP 코드는
<?
~
?>으로 하거나
<?php
~
?>으로 되는데 여기서는 <?php ~ ?>으로 하겠다. 어떤 형태든 간에 PHP 코드 부분 이외의 나머지 부분은 일반적인 HTML 파일로 간주된다. 웹 프로그램은 HTML로는 만들 수 없는 동적인 내용을 담는 웹 페이지를 만들기 위해서 사용되는데 HTML 파일 안에서 필요한 부분에 코드가 삽입되는 형태를 가진다. 필요하면 <?php ~ ?> 안에 도 다른 <?php ~ ?>가 들어갈 수 있고, <?php ~ ?>가 여러 개 나열될 수도 있다.
문장과 주석
C나 Java 언어와 마찬가지로 PHP도 프로그래밍 언어로써 기본을 갖추고 있는데
▪ 문장 끝은 ;으로 끝낸다.
▪ 프로그램 작성이나 수정 중에 사람이 읽고 프로그램 구성을 쉽게 파악할 수 있게 해주는 주석(comment)을 사용할 수 있다. 주석은 Oracle에서의 주석과 동일한데
a) 여러 줄 주석은 /*
~
*/으로 해주고,
b) 한 줄 주석은 //로 시작해서 행이 바뀌면 끝난다.
변수와 상수
▪ 상수(constants)는 C나 Java와 같은 프로그램에서처럼 변하지 않는 값인데 7, 3.14, "abc" 등을 말한다. 프로그램 안에서 고정된 값이다. PHP에서의 표시법은 소수점 없는 숫자인 정수, 소수점 있는 숫자인 실수, 참/거짓의 불린(boolean), 그리고 문자들로 이뤄진 문자열이 있다. 문자열은 ' '이나 " "을 모두 사용할 수 있다.
▪ 변수(variables)는 변할 수 있는 값으로써 프로그램 실행 중 (일정 기간) 저장할 필요가 있는 값을 담아두는 그릇(container)으로 볼 수 있다.
변수 만들기
PHP는 C나 Java와 달리 변수를 사용하기 전에 Shell Script나 Python에서처럼 미리 선언하지 않아도 된다. 변수는 값을 처음 대입하는 순간 생성된다. 하지만 변수 생성은 C나 Java에서의 변수_명 생성과 유사한데
a) 첫 번째 글자는 알파벳이나 _로 시작되고
b) 그다음에는 알파벳, _, 숫자를 섞을 수 있고
c) 특수문자(!@#$%^&*) 등과 공백을 사용할 수 없다는 것인데,
d) 그리고 변수 앞에 $를 붙인다는 것이다.
e) 하나의 변수 $a에 정수, 실수, 문자열 등 여러 데이터 형을 대입해도 아무 문제가 없다.
=>이 변수_명 작성은 함수_명 작성 시에도 똑같이 적용된다.
값을 입력받는 방법
프로그래밍에서는 사용자로부터 값을 입력받는 것이 필수적이다. C에서는 scanf() 함수를 사용해서 콘솔에서 직접 입력받을 수 있는데 PHP는 웹에서 동작하므로 HTML의 <form> 태그를 사용해서 구성된 입력 폼을 통해서 값을 입력받아야 하고, 입력된 값을 확인(submit) 버튼을 눌러서 PHP 프로그램의 실행된 결과가 HTML 페이지에게 전달되어서 웹브라우저에 띄우게 된다.
=>값을 입력받는 HTML 폼 형식은
<form action="이동할_PHP_페이지" method="POST(or GET)_전송방식">
입력_콘트롤_태그들
......
<input type=submit value="확인(or OK)">
</form>이다. 여기서 html 폼 파일과 실제 값을 입력받아서 처리해주는 php 파일이 연동되어져야 하므로 이 두 파일은 같은 디렉터리 안에 들어있어야 한다.
=>여기서 사용되는 용어는 다음과 같다.
▪ action 속성은 확인 버튼을 눌렀을 때 이동할 웹 페이지의 URL(or 이동할_페이지_이름)을 써주는데 이동할 파일이 a.php라면 action="a.php"식으로 해주면 된다.
▪ mehtod 속성은 데이터를 넘겨주는 방식인데 GET와 POST 두 가지가 있다. POST(값이 전달될 때 사용자에게 보이지 않고)나 GET(값이 전달될 때 웹브라우저의 주소_창에 표시된다) 중 하나를 적어주면 된다.
▪ 입력_컨트롤_태그는 <form> 태그 내부에서 사용되는데 text box, radio button(원 모양, 하나만 선택가능), check box(정사각형 모양, 여러 개 선택 가능), dropdown list(▼) 등을 화면에 표시해주는 <input>, <select>, <textarea> 태그들을 써주면 된다.
▪ submit 버튼은 입력_컨트롤_태그의 여러 옵션들과 마찬가지로 <input> 태그를 통해서 입력된 값을 지정된 페이지로 전해주는 기능을 한다.
==>모든 PHP 프로그램이 꼭 HTML 파일의 완전한 형태를 가질 필요는 없다. 웹 브라우저에서 기본적으로 HTML을 사용하기 때문이다. HTML 없이 단지 PHP 코드만 기술해도 된다.
▪ <br>은 HTML 태그로써 줄 바꿈이다. <br><br>은 두 줄을 벌린다.
▪ 문자열을 출력할 때 " "를 사용하고
▪ # 기호와 같은 특수문자를 출력한다면 \ 뒤에 \#식으로 써주면 된다.
▪ $는 PHP의 변수_명을 표시한다.
▪ 예약어는 대소문자를 구분하지 않지만 변수_명과 함수_명은 대소문자를 구분한다.
▪ 연달아 나오는 공백이나 개행 문자(\n)는 하나의 공백으로 처리하며, 특히 문자열의 앞에 나오는 공백 문자들은 모두 무시된다.
▪ 웹브라우저 HTML에서 공백을 제대로 표시하려면 공백마다 HTML 코드인 을 넣어주면 된다.
▪ echo 문장에 적어주는 문자(어구)는 여러 줄에 걸쳐 있어도 하나의 문자열로 해석되어 출력된다. echo 다음의 " ~ "의 내용이 모두 한 줄이 된다.
PHP나 Python, Java, C, C++ 등을 별도의 프로그램을 설치하지 않고 컴파일 없이도 웹에서 실행해볼 수 있는데 www.phptester.net으로 들어가서 다음 코드를 저장하지 않고 실행해볼 수 있다.
연산자
기본적으로 PHP도 C나 Java 언어의 연산자와 유사하게 연산자를 활용한다.
∎ 산술 연산자 : 사칙연산에서의 +, -, *, /, 그리고 나머지 %를 사용한다.
=>PHP는 데이터형에 크게 구애받지 않아서 정수 나눗셈을 해도 실수로 나올 수 있다.
<=cast 형 변환자가 불요
∎ 문자열 연산자 : 두 문자열을 연결할 때 .(dot) 연산자를 사용한다.
∎ 비트 연산자 : 숫자가 아니라 비트 단위의 연산을 수행하는 =, +=, *=, /=, %=, =, &=, !=, ^=, <<=, >>= 등을 사용한다.
∎ 증감 연산자 : 변수의 값을 1씩 증가/감소시키는 ++, --를 사용한다.
∎ 관계 연산자 : >, >=, <, <=, ==, != 이고
∎ 논리 연산자 : &&(and), ||(or), !(not) 이다.
=>관계연산자, 논리연산자는 if 조건문이나 while 반복문에서 사용되는 경우가 대부분이다.
문자열
.(dot) 문자열 연산자는 두 개의 문자열/변수_명을 연결해주는 단순한 연산자이다.
비트 연산자
비트 연산자는 숫자 전체가 아니라 그 값을 이진수로 보아서 자릿수, 즉 비트에 대해서 연산하는데 &(AND: 모두 1일 때만 1), |(OR: 하나라도 1이 있으면 1), ^(XOR: 서로 다르면 1, 서로 같으면 0), ~(NOT), <<(좌측이동, 빈곳은 0으로 채움), >>(우측이동, 빈곳은 0으로 채움) 등이다.
11100011(227)에서 <<3 하면 좌측으로 3비트 이동해서 10011000이 되고, >>2 하면 우측으로 2비트 이동해서 10001100이 된다. 제일 좌측의 첫 번째 수가 1이면 -를 의미하므로 비트 연산으로 비트가 이동해도 -를 유지하기 위해서 제일 좌측의 첫 번째는 1이 유지된다.
데이터베이스