CGI는 위와 같은 구조를 가지는데.. ( HTML은 1과 4의 과정만 있음 )
보시는 바와 같이 HTML 보다 한단계 더 처리를 함으로써 계산과 처리 기능이 추가되었습니다. 이로인해 우리는 정적인 변화 없는 웹 페이지에서 변화가 자유롭고 방문자와 홈페이지 제작자간에 서로 상호작용이 가능한 웹 페이지를 만들 수 있게 된 것입니다.
그러나 여기서 주의해야 할 점은 3번에서 보듯이 CGI로 처리된 값은 HTML로 전송되어 집니다.
웹 브라우저는 HTML밖에 모르니 HTML로 바꿔서 보여줘야 하는 것입니다.
( PHP를 하려면 당연히 HTML을 알고 있어야겠죠? )

그러면 CGI와 PHP는 어떤 관계인가?

PHP는 약간 다르긴 하지만 일종의 CGI라고 볼 수 있습니다.


CGI는 일반적으로 웹서버로 요청이 들어오면 CGI 프로그램을 실행하여 하나의 프로세스를 생성하고 그 처리 결과를 웹서버로 전송한 후 프로세스가 종료되는 형식입니다.
100개의 요청이 들어오면 CGI 프로세스가 100개가 생성이 됩니다.

PHP는 CGI와 달리 아파치 웹서버에 모듈로 장착되어 있습니다.
따라서 매회 실행시마다 프로세스가 생성되는 CGI와 달리 하나의 프로세스에 여러개의 쓰레드를 생성하여 처리가 가능합니다. 

그래서 프로세스방식인 CGI 보다 쓰레드방식인 PHP가 성능이 우수합니다.



PHP는 무엇인가?

PHP (공식적 PHP Hypertext Preprocessor) 는 Server - side HTML-embedded 스크립트 언어입니다.
즉, PHP는 서버에서 실행되며 HTML을 포함한 스크립트 언어라는 말입니다.
HTML을 포함하고 있기 때문에 HTML 파일을 PHP 확장자 (.php )로 저장하여도 아무 지장없이 사용할 수 있습니다.

시작(<?php)과 끝 태그(?>)를 이용하여 HTML과 PHP를 구분합니다.



php도 세미콜론으로 한 문장을 파악하므로 줄의 끝에는 세미콜론이 필요.


주석은 // , # , /* */



Type (변수형)

진리값 , 정수 , 실수 , 문자열 , 배열 , 객체 , 리소스 , 널 총 8가지의 변수형


특수문자

의미

\n

 개행문자 ( 줄 바꿈 )

\r

 캐리지 리턴

\\

 역 슬래쉬

\t

 수평 탭

\"

 따옴표

\$

 달러 표시


<php?

?>

안의 내용이 php 내용이 된다.



2) 따옴표 내의 변수사용

큰 따옴표내에서는 변수의 사용이 가능합니다.
예를 들어 $name 이라는 변수에 "조명진" 이라는 문자열이 저장되어 있다면,
$str = "나의 이름은 $name입니다.";
라고 하였을 때 $str = "나의 이름은 조명진입니다."; 와 같은 효과를 가지게 됩니다.

2. 작은 따옴표

'나는 문자열이다.' 와 같이 작은 따옴표 안에 문자열을 넣으면 됩니다.
작은 따옴표를 이용한 방법은 큰 따옴표를 이용할 때와 차이가 있는데,
작은 따옴표 내부에 쓰여진 특수문자와 변수가 허용되지 않는 다는 것입니다.
echo '작은 따옴표 안에서는\n 특수문자와 변수가 $name 동작을 안해요.';
의 결과는 작은 따옴표 안에서는\n 특수문자와 변수가 $name 동작을 안해요. 처럼 그대로 표현됩니다.

3. 히어닥 문법

$str = <<<EOD
문자열이라네~
나도 문자열이라네~

EOD;


PHP에서는 0부터 시작하는 숫자형 인덱스와 foo 같이 문자로 구분하는 인덱스 두가지가 있습니다


<?
class Human {  //인간 클래스를 정의 합니다.

        var $Name;
        var $Age;
        var $Height;
        var $Weight;  

        function Eat ( ) { 먹는 행위를 함수로 정의 }
        function Walk ( ) { 걷는 행위를 함수로 정의 }
        function Work ( ) { 일하는 행위를 함수로 정의 }
        function Talk ( $words ) { 말하는 행위를 함수로 정의 }
}    

    $철수 = new Human; //인간 클래스를 이용해 철수 객체를 생성
    $철수->Eat(); // 철수야!! 밥먹어라~!
    $철수->Talk($철수->Age); // 철수야~ 몇살이야? 말해봐!!
?>

php에서는 클래스를 이렇게 정의한다.


상속도 있다.


<?

class Baby Extends Human { //인간 클래스를 상속받아 아기 클래스를 정의 합니다. }

?>


static은 지역 변수 허용,

전역 변수는 전역 위치에 선언하되 지역변수와 혼선시 global $a와 같이 식별가능

define("상수명","상수에 저장될 값");



미리 정의된 변수

변수에는 우리가 만들어 사용할 수 있는 변수와 미리 정의되어진 변수가 있습니다.
우선 미리 정의된 변수는 서버 종류, 버전 등이나 기타 환경에 따라 변하는 변수들입니다.
아파치와 PHP 각각 몇 개의 변수를 지정해 놓은 상태이며 이 변수들은 우리가 인위적으로 값을
수정하거나 일반 변수로 사용할 수 없습니다.

수퍼 전역변수

$_GET

 HTTP GET 방식으로 넘어온 변수

$_POST

 HTTP POST 방식으로 넘어온 변수

$_COOKIE

 HTTP 쿠키 변수

$_FILES

 업로드시 파일 정보 변수

$_SESSION

 세션 변수

$_SERVER

 웹서버와 PHP 환경에서의 환경 설정 변수

외부로 부터의 변수

내부에 선언없이 외부로부터 넘어오는 변수입니다.
예제를 보시면 이해가 가실 겁니다.


출처 : http://www.ezphp.net/lecture/lecture5.php

였었는데..


보던 곳이 <?php 와 <?에 의한 문제 발생이라던가, 코드가 제대로 실행되지 않는 등.. 상태가 좋지 않아 다른 곳으로.


출처 : http://www.apmsetup.com/php.php



논리 연산자




$a and $b
:  $a 와 $b 가 모두 참(true) 이면 참(true)

$a or $b
:  $a 와 $b 중 하나라도 참(true) 이면 참(true)

$a xor $b
:  $a 와 $b 중 하나만 참(true) 이면 참(true)

!$a
:  $a 가 참(true) 이면 거짓(false), 거짓(false) 이면 참(true)

$a && $b
:  $a 와 $b 가 모두 참(true) 이면 참(true)

$a || $b
:  $a 와 $b 중 하나라도 참(true) 이면 참(true)


$_POST[변수명]

$_POST[$변수명] -> PHP 설정 파일 (ini)의 register_globals = on 인 상태에서만 가능하다. 

register_globals를 켜면 변수등을 사용할 때 앞에 _SERER 등을 안 붙이거나 하는 등 전역변수를 편히 쓸 수 있지만.. 안전성이 떨어진다고 한다/



산술 , 대입 연산은 동일하니 생략.


비교 연산은 다음과 같이 한다.

if($a == "hi" && $b == "bye")


switch case도 동일하다. $변수 로 넣어야한다는 것 뿐..

그 외의 경우를 의미하는 default도 그대로다


include 제어문

<header.inc>

<?
$string = "Hello World";
?>


<output.php>

<?
include "./header.inc";

echo("$string");
?>



class는 C와 같으며, 상속은 자바와 같이 extends 를 사용한다.

상위 클래스 접근 시 parent 키워드를 사용할면 된다.


심지어 접근 연산자 (access modifier)도 있다;







'프로그래밍 > 웹 프로그래밍' 카테고리의 다른 글

php 기초 실습  (0) 2016.03.13
php 입문 사전 지식  (0) 2016.03.13
html 중급?  (0) 2016.02.21
HTML 기초  (0) 2016.02.21
비즈니스 로직(Business logic)?  (0) 2016.02.14
웹서버(Web Server) / 웹 서버 어플리케이션(WSA)  (0) 2016.02.14
Posted by GENESIS8

댓글을 달아 주세요