PHP/Python/Ruby

게시물 검색
전체 32건 2 페이지
  • PHP 범위연산자 - Class
    범위연산자란?

    PHP4에서만 지원되며 클래스와 메쏘드 또는 클래스와 멤버변수를 연결시켜 주는 일로 범위연산자(scope resolver) 뒤에 나오는 메쏘드와 멤버변수의 스코프(사용범위)를 지정하는 일을 하는 것입니다.



    클래스명::메쏘드명
    클래스명::멤버변수명

    범위연산자 사용목적



    1. 인스턴스되지 않은 클래스의 메쏘드에 접근할 때
    2. 부모클래스의 메쏘드와 멤버변수에 접근할 때

    인스턴스되지 않은 클래스에 있는 메쏘드에 접근할 때



    class A {
    function example() {
    echo "클래스 A에 정의된 메쏘드 example. \n";
    }
    }

    A::example();

    아직 클래스 A에 대한 객체가 생성되기 전이지만 범위연산자를 이용하면 일반 함수처럼 실행시킬 수 있습니다. 그러나 클래스 A에 대한 객체가 전혀 생성되어 있지 않으므로 클래스 외부에서 이 함수에 접근할 때는 이 함수 내에 $this 객체를 사용해서는 안됩니다. 물론 일반 함수와 마찬가지로 지역 변수 및 전역 변수를 사용할 수는 있습니다.



    class A {
    var $var = "초기값";

    function example() {
    echo "클래스 A에 속한 메쏘드 example. \n";
    echo $this->var . "\n";
    }
    }

    A::example();

    위의 예제를 보면 아직 클래스 A에 대한 객체가 생성되지 않았으므로 멤버변수 $var에 대한 기억장소가 할당되지도 않았고 더구나 초기값을 설정할 수도 없습니다. 그러니 아무리 범위연산자를 이용하여 메쏘드 example()에 접근한다해도 멤버변수 $var의 초기값을 나타낼 수는 없을 것입니다. 실험해 본 바로는 이 경우 $this->var의 값이 NULL로 처리되는 것 같습니다.

    부모클래스의 메쏘드에 접근할 때



    class A {
    function example() {
    echo "클래스 A에 정의된 메쏘드 example. \n";
    }
    }

    class B extends A {
    function example() {
    echo "클래스 B에서 재정의된 메쏘드 example. \n";
    A::example();
    }
    }

    $b = new B;

    $b->example();

    이 예의 출력결과를 보면 아래와 같이 나타날 것입니다.



    클래스 B에서 재정의된 메쏘드 example.
    클래스 A에 정의된 메쏘드 example.

    범위연산자는 클래스가 상속되었을 때 재정의되기 전의 부모클래스에 있는 메쏘드에 접근할 때 유용하게 사용될 수 있습니다.

    부모클래스의 멤버변수에 접근할 때

    php.net의 문서 설명과는 달리 아직 공개되지 않는 어떤 방법이 있는 지는 모르겠으나 부모클래스의 멤버변수로 접근하는 방법에 대하여는 문서화되지 않은 것 같습니다.…
    작성자최고관리자 시간 02-07 조회 1846
  • PHP 생성자 - Class
    생성자란?

    생성자(constructor)는 클래스의 새로운 인스턴스가 생성될 때 자동적으로 호출되는 클래스 내의 함수이며, 클래스명과 동일한 이름를 갖는 특수한 메쏘드입니다.



    class Cart {
    var $items; // Items in our shopping cart

    // Add $num articles of $artnr to the cart

    function add_item ($artnr, $num) {
    $this->items[$artnr] += $num;

    }

    // Take $num articles of $artnr out of the cart

    function remove_item ($artnr, $num) {
    if ($this->items[$artnr] > $num) {
    $this->items[$artnr] -= $num;
    return true;
    } else {
    return false;
    }
    }
    }

    class Auto_Cart extends Cart {
    function Auto_Cart () {
    $this->add_item ("10", 1);
    }
    }

    위의 예제는 클래스 Auto_Cart가 new 연산자로 만들어질 때마다 품목번호 "10"의 수량이 1을 갖도록 장바구니를 초기화시키는 생성자를 새로이 포함하여 정의하였습니다.

    생성자에 전달되는 인자

    생성자는 필요하면 선택적으로 인자(argument)를 전달할 수도 있기 때문에 매우 유용하게 사용됩니다.



    class Constructor_Cart extends Cart {
    function Constructor_Cart ($item = "10", $num = 1) {
    $this->add_item ($item, $num);
    }
    }

    // Shop the same old boring stuff.

    $default_cart = new Constructor_Cart;

    // Shop for real...

    $different_cart = new Constructor_Cart ("20", 17);

    PHP3와 PHP4 생성자 사이에 발생하는 미묘한 차이

    PHP에서는 클래스와 동일한 이름을 가진 함수를 생성자로 처리하고 있습니다. 따라서 아래와 같은 경우에 클래스 B의 이름과 동일한 이름의 함수 B()가 없으므로 객체를 생성할 때 실행할 생성자가 없습니다.



    class A {
    function A() {
    echo "I am the constructor of A.\n";
    }
    }

    class B extends A {
    function C() {
    echo "I am a regular function.\n";
    }
    }

    // no constructor is being called in PHP.
    $b = new B;

    그러나 만약 아래와 같이 클래스 A에 함수 B()가 정의되어 있다면 설사 클래스 B를 가지고 객체를 생성하더라도 클래스 A에 있는 일반함수 B()를 클래스 B의 생성자로 인식합니다. 즉, PHP에서는 함수 B()가 클래스 B에 속해 있는지 아니면 부모 클래스로부터 상속된 함수인지를 인식하지 못합니다. 따라서 객체 $b를 생성할 때 클래스 A에 있는 일반함수 B()를 생성자로써 실행하게 되는 것이지요.



    class A {
    function A() {
    echo "I am the constructor of A.\n";
    }

    function B() {
    echo "I am a regular function named B in class A.\n";
    echo "I am not a constructor in A.\n";
    }
    }

    class B extends A {
    function C() {
    echo "I am a regular function.\n";
    }
    }

    // no constructor is being called in PHP.
    $b = new B;

    클래스 B에 속하지도 않은, 부모클래스로부터 상속된 일반 함수 B()를 클래스 B의 생성자로 인식한다는 것은 대부분 우리가 전혀 의도하지 않는 일로 잘못하다가는 원치않는 결과를 초래할 수도 있습니다. 객체지향언어에서 말하는 생성자의 구분이 모호해 진다는 것이지요. 이러한 문제를 PHP4에서는 바로 잡았습니다. 단지 이름만 같다고 생성자로 처리하는 것이 아니라 반드시 해당 클래스 내에 포함되어 있는 것만 생성자로 처리하도록 수정하였습니다. 따라서 위의 예를 PHP4에서 수행한다면 클래스 A에 속한 일반함수 B()를 생성자로써 실행하지는 않습니다.

    대신에 PHP4에서는 생성자와 관련하여 새로운 기능이 추가되었습니다. 파생클래스에서 생성자가 정의되어 있지 않으면 그 부모 클래스에 정의된 생성자가 실행하도록 수정되었습니다. 즉, 위의 예에서보면 객체 $b를 생성할 때 클래스 B에 해당하는 생성자 B() 함수가 정의되어 있지 않으므로 그 부모 클래스의 생성자인 A()가 생성자로 수행됩니다.

    이러한 PHP3와 PHP4 사이의 미묘한 차이를 명확히 구분하지 못한 상태에서 생성자를 다루게 되면 프로그램이 매우 심각한 오류에 빠질 수 있다는 것을 참고하시기 바랍니다.

    ***** 주의 *****

    PHP4에서의 개선내용은 http://www.php.net/manual/en/language.oop.constructor.php에서 문서화된 내용입니다만 실제로 PHP4는 이 문서와 같이 동작하지 않는 것으로 보고되고 있습니다(아래 주소 참조할 것).

    http://www.phpbuilder.com/lists/php-documentation-list/2003031/0100.php

    이러한 문제로 인하여 2003년 2월 17일 bugs.php.net에 공식적으로 버그리포팅되어 있습니다.

    http://bugs.php.net/bug.php?id=22253

    2003년 2월 17일 당시에는 PHP 버전 4.3.1이 공개된 시점으로 이 이후 버전에서도 이 버그는 개선되지 않고 있습니다. 위에서 언급한 www.phpbuilder.com에 의하면 PHP3와 php4가 동일하게 동작하며, 단지 PHP5에서만 개선된 내용대로 동작하고 있음을 알 수 있습니다.…
    작성자최고관리자 시간 02-07 조회 1879
  • PHP 클래스 상속 - Class
     클래스를 상속하려면?기존에 이미 작성된 클래스를 상속(class inheritance)받으면 이미 작성된 메쏘드와 멤버변수를 그대로 이어받게 됩니다. 상속받은 특성에 덧붙여 새로운 특성을 추가하는 방법으로 새로운 클래스를 정의하게 됩니다. 이와 같이 기존의 클래스로부터 특성을 이어받는 것을 상속이라고 합니다. 이 때 확장된 클래스를 정의하기 위해 "extends"라는 키워드를 사용합니다.부모클래스 & 자식클래스에 관련된 용어기존의 클래스와 확장된 클래스를 나타내는 용어는 객체지향언어마다 다양하게 사용되고 있습니다. 그러나 어떤 용어를 사용하더라도 같은 의미로 사용되고 있다고 이해하시면 됩니다.기존의 클래스확장된 클래스용어영문용어영문기반클래스base class파생클래스derived class수퍼클래스super class서브클래스sub class부모클래스parent class자식클래스child class클래스 상속 예제class Cart {
    var $items; // Items in our shopping cart

    // Add $num articles of $artnr to the cart

    function add_item ($artnr, $num) {
    $this->items[$artnr] += $num;
    }

    // Take $num articles of $artnr out of the cart

    function remove_item ($artnr, $num) {
    if ($this->items[$artnr] > $num) {
    $this->items[$artnr] -= $num;
    return true;
    } else {
    return false;
    }
    }
    }

    class Named_Cart extends Cart {
    var $owner;

    function set_owner ($name) {
    $this->owner = $name;
    }
    }클래스 Named_Cart는 클래스 Cart의 모든 변수와 함수를 그대로 상속받게 되며, 새로운 멤버인 변수 $owner과 함수 set_owner()를 추가하여 정의합니다. 앞서 배운 new 연산자를 이용하여 클래스 Named_Cart의 객체를 생성한 후 장바구니 주인을 지정하거나 주인이 누구인지 확인할 수 있습니다. 아울러 부모클래스 Cart에 있는 장바구니 관련 함수를 그대로 사용할 수 있습니다.$ncart = new Named_Cart; // Create a named cart
    $ncart->set_owner ("kris"); // Name that cart
    print $ncart->owner; // print the cart owners name
    $ncart->add_item ("10", 1); // (inherited functionality from cart)단일 상속PHP는 다중 상속(multiple inheritance)를 지원하지 않으며, 오로지 단일 상속만 지원합니다.…
    작성자최고관리자 시간 02-07 조회 1360
  • PHP 객체 생성 - Class
    객체 생성=객체 초기화(object initialization)=인스턴스화(instantiation)

    클래스는 붕어빵을 만드는 틀(= type, =template)과 같은 것으로, 클래스 내에 정의된 메쏘드와 멤버변수를 사용하기 위해서는 틀을 가지고 붕어빵을 만드는 것같이 객체를 생성하여야 합니다. 객체(object)를 초기화하는 방법은 new 연산자를 사용하여 객체를 변수에 인스턴스 시키는 것입니다.



    class Cart {
    var $items; // Items in our shopping cart

    // Add $num articles of $artnr to the cart

    function add_item ($artnr, $num) {
    $this->items[$artnr] += $num;
    }

    // Take $num articles of $artnr out of the cart

    function remove_item ($artnr, $num) {
    if ($this->items[$artnr] > $num) {
    $this->items[$artnr] -= $num;
    return true;
    } else {
    return false;
    }
    }
    }

    $cart = new Cart;
    $cart->add_item("10", 1);

    위와 같이 하면 클래스 Cart에 대한 객체 $cart가 생성됩니다. 객체 함수 add_item()은 장바구니에 품목번호 "10"의 수량을 1개 추가하기 위해 호출됩니다.

    지정연산자 "->"의 의미

    "->"는 객체의 멤버변수 또는 메쏘드를 지정하는데 사용되는 지정연산자입니다. C++ 언어를 접해 본 분은 쉽게 이해하시겠지만, new 연산자로 생성되는 객체를 나타내는 객체명에는 실제로 객체의 멤버(변수 또는 함수)가 존재하는 것이 아니라 객체의 멤버가 존재하는 메모리상에 위치를 나타내는 주소(adress)가 담겨져 있습니다. 이와 같이 객체지향언어에서는 주소를 가지고 멤버를 참조하려면 아래와 같이 지정연산자 "->"를 이용하게 됩니다.



    멤버변수를 참조할 때 : 객체명->변수;
    메쏘드를 참조할 때 : 객체명->함수;

    C++ 언어에서는 "->"를 화살표 멤버 연산자라고 말하며, "->"의 앞쪽에 있는 식별자(여기서는 객체명)가 포인터(pointer; 주소를 의미함)일 때 그 멤버를 참조하기 위한 연산자입니다.

    지역 변수에 초기화된 객체

    객체를 지역변수에 인스턴스할 수 있기 때문에, 클래스를 정의하고 객체를 생성하는 것을 하나의 모듈로 개발할 수 있습니다.



    예제 코드 :

    a."";
    }
    }

    $obj = new test;
    $obj->echo_test();
    }

    class_in_function();
    ?>

    실행 결과 :

    함수 내에 정의된 클래스의 생성자 실행
    함수 내에 정의된 클래스의 멤버변수 $a의 값 = 10

    객체 생성할 때 생성자명을 가변함수로 지정하기



    $classname = "MiniDB";
    $obj = new $classname();

    이 코드는 PHP와 PHP4 모두에서 정상적으로 동작합니다.

    메쏘드명을 변경하기(가변함수)

    PHP의 매뉴얼을 보면 가변함수(variable function)를 지원하는데 이것은 변수명 뒤에 괄호가 왔을 때, PHP는 그 이름을 가진 함수를 찾아 실행하는 것입니다. 이것은 클래스의 메쏘드에서도 그대로 사용할 수 있습니다.



    class test {
    function A() {
    echo "나 A 함수 \n";
    }
    }

    $obj = new test;

    $method = "A";
    $obj->$method();

    이것을 응용하여 같은 실행문으로 A0, A1, A2라는 메쏘드에 번갈아 가면서 접근하려면 역시 가변함수를 사용하면 됩니다.



    class test {
    function A0() {
    echo "나 A0 함수 \n";
    }

    function A1() {
    echo "나 A1 함수 \n";
    }
    function A2() {
    echo "나 A2 함수 \n";
    }
    }

    $obj = new test;

    for ($i=0;$i$method();
    }

    위에 것은 모두 PHP3와 PHP4에서 모두 동작되는 코드입니다. 만약, PHP4에서만 동작시켜도 무방하다면 아래와 같이 중괄호를 이용하면 소스를 간결하게 코딩할 수 있습니다.



    for ($i=0;$i{"a$i"}();
    }

    객체명을 변경하기(가변변수)

    가변변수(Variable Variables)의 유용함은 모두 알고 있겠지만 PHP4에서는 별문제가 없지만 PHP에서 객체변수를 가변변수로 사용하기는 그리 쉽지 않습니다.



    class test {
    var $hello = "hello world";
    }

    $obj = new test;
    $a = "obj";
    echo $$a->hello; // or echo ${$a}->hello;

    PHP에서 위와 같이 작성하여 실행한다면,



    Object
    Parse error: parse error, ...... test.php3 on line 9

    와 같은 에러를 만나게 됩니다. 그러나 PHP4에서는 객체변수에도 가변변수를 제대로 지원하기 시작했습니다. 따라서 위의 예제가 에러없이 잘 실행되지요. 그러면 PHP에서는 객체변수의 이름을 변경할 수 없을까요? 아래와 같이 $GLOBALS 배열을 사용해 보세요. 아무 문제없이 잘 실행될 겁니다.



    class test {
    var $hello = "hello world";
    }

    $obj = new test;
    $a = "obj";
    echo $GLOBALS[$a]->world();

    따라서 PHP3와 PHP4 모두에서 동작되기를 바란다면 $GLOBALS 배열을 이용하여 작성하세요.

    배열구조의 멤버변수를 가변변수로 다루는 방법



    class test {
    var $arr = array();

    function test() {
    $this->arr[0] = 0;
    $this->arr[1] = 1;
    }
    }

    $obj = new test;

    위와 같이 클래스 test에 배열 구조의 멤버변수가 있을 때, 이러한 멤버변수의 배열 요소에 접근하려면 $obj->arr[0]; 와 같이 사용하면 됩니다. 여기서 멤버변수명 "arr"을 가변변수로 처리하려면,



    $prop = "arr";
    $obj->{"$prop"}[0];

    와 같이 가변변수 $prop를 중괄호로 묶어주세요. 여기서 겹따옴표는 생략해도 됩니다. PHP3와 PHP4에서 모두 잘 동작할 것입니다.…
    작성자최고관리자 시간 02-07 조회 2645
  • PHP 클래스 정의 - Class
    클래스란?

    클래스는 객체의 변수와 함수를 정의하는 템플릿이며, 이에 따라 변수로 표현되는 데이터 영역과 이러한 데이터 영역에 접근할 수 있는 함수로 구성됩니다. 클래스 내에 정의된 변수를 멤버변수(member variable)라고 하고 함수를 메쏘드(method)라고 합니다. C++과 같은 객체지향언어에서는 멤버변수를 데이터멤버, 메쏘드를 멤버함수라고 호칭합니다. PHP에서 클래스를 사용하는 것은 C++ 또는 자바와 거의 비슷합니다.

    클래스 정의

    클래스를 정의(class definition)할 때는 키워드 "class"를 사용합니다. 클래스를 구성하는 멤버변수와 메쏘드를 정의할 때는 "var"과 "function"이라는 키워드를 사용합니다. "function"은 일반 함수를 정의할 때도 사용되지만 "var"은 클래스의 멤버변수를 정의할 때만 사용되는 키워드로, 멤버변수를 정의할 때는 반드시 명시하여야 합니다. 예를 들어 클래스는 아래와 같이 정의합니다. 이 예는 PHP 매뉴얼에 있는 것으로 수정하지 않고 가져왔습니다. 이 예에서는 $items라는 멤버변수와 add_item, remove_item라는 메쏘드가 정의되어 있습니다.



    class Cart {
    var $items; // Items in our shopping cart

    // Add $num articles of $artnr to the cart

    function add_item ($artnr, $num) {
    $this->items[$artnr] += $num;
    }

    // Take $num articles of $artnr out of the cart

    function remove_item ($artnr, $num) {
    if ($this->items[$artnr] > $num) {
    $this->items[$artnr] -= $num;
    return true;
    } else {
    return false;
    }
    }
    }

    멤버변수의 초기화

    PHP에서는 멤버변수값을 아래와 같이 상수 또는 변수를 이용하여 초기화할 수 있습니다.



    상수로 초기화할 때 :

    class Cart {
    var $items = 0; // Items in our shopping cart
    }

    변수로 초기화할 때(1) :

    class Cart {
    var $items; // Items in our shopping cart

    function Cart($items) {
    $this->items = $items;
    }
    }

    변수로 초기화할 때(2) :

    $items = 0;

    class Cart {
    var $items = $GLOBALS["items"]; // Items in our shopping cart
    }

    반면 PHP4에서는 var 변수에는 상수로만 초기화할 수 있고, 상수가 아닌 값을 가지고 초기화할 때는 생성자를 이용하여야 합니다. 즉, var $items = $GLOBALS["items"];와 같은 표현은 허용하지 않습니다.

    따라서 아래와 같은 표현은 PHP4에서는 허용하지 않습니다.



    class Cart {
    var $todays_date = date("Y-m-d");
    var $name = $firstname;
    var $owner = 'Fred ' . 'Jones';
    var $items = array("VCR", "TV");
    }

    PHP4에서 초기화할 때 동일한 결과를 얻으려면 아래와 같이 생성자를 이용합니다.



    class Cart {
    var $todays_date;
    var $name;
    var $owner;
    var $items;

    function Cart() {
    $this->todays_date = date("Y-m-d");
    $this->name = $GLOBALS['firstname'];
    /* etc. . . */
    }
    }

    PHP4 예약어

    stdClass

    stdClass는 Zend에서 내부적으로 사용하고 있는 예약어입니다. 따라서 사용자는 클래스명으로 stdClass를 사용할 수 없습니다. get_declared_classes() 함수를 사용하면 현재 스크립트에 정의된 클래스명을 배열에 담아 되돌려 줍니다. 따라서 이 함수를 이용하면 stdClass의 존재를 확인할 수 있습니다.



    \n");
    }

    ?>

    이 문서를 실행하면 아래와 같은 결과를 얻을 수 있습니다.



    $arr_class[0]=stdClass
    $arr_class[1]=OverloadedTestClass
    $arr_class[2]=Directory
    $arr_class[3]=OCI-Lob
    $arr_class[4]=vegetable
    $arr_class[5]=spinach

    위 예제의 실행결과를 보면, 사용자가 정의한 vegetable, spinach 외에도 stdClass, OverloadedTestClass, Directory, OCI-Lob가 있는 것을 볼 수 있습니다. 좀 더 자세한 것은 메뉴 "클래스&객체 함수 >> get_declared_classes()"를 살펴보시기 바랍니다.

    매직함수(magic function)

    __sleep, __wakeup과 같이 "__"로 시작하는 매직함수는 PHP 클래스 내에서 특수한 목적으로 사용됩니다. 따라서 이 함수들이 가지고 있는 문서화된 매직 기능을 사용할 필요가 없다면 클래스 내에 이 함수들을 정의해서는 안됩니다. 자세한 것은 메뉴에서 "매직함수"장을 살펴보기 바랍니다.

    $this가 무엇에 쓰는 물건인고?

    클래스 메쏘드 내에서만 사용되며, 클래스의 현재 인스턴스를 참조할 때 사용하는 변수이며, 예를 들어 현재 객체 내에 something라고 명명된 임의의 변수 또는 함수를 참조하기 위해서는 $this->something을 사용하여야 합니다. 즉, "$this"의 의미는 new 연산자에 의해 생성될 객체 자신을 의미합니다. 그러니 아직 생성되지 않은 객체 자신을 의미하는 의사(擬似)변수(pseudo variable)이며, "my own" 또는 "current object"라고 불리웁니다.

    앞에서 클래스를 붕어빵 틀과 같다고 했습니다. 정의된 클래스에 의해 생성된 객체는 붕어빵 틀로 만들어낸 수많은 붕어빵이지요. 아래 예에서 본다면, $붕어빵1->make("특급밀가루")으로 make() 메쏘드에 접근한다면 이 때 make() 메쏘드 내의 $this는 $붕어빵1을 의미하고, $붕어빵2->make("중급밀가루")으로 접근한다면 이 때 $this는 $붕어빵2를 의미하고, $붕어빵3->make("저급밀가루")으로 접근한다면 이 때 $this는 $붕어빵3을 의미합니다.



    class 붕어빵 {
    var 재료;

    function make($재료) {
    $this->재료 = $재료;
    ......
    }
    }

    $붕어빵1 = new 붕어빵; // 인스턴스 "붕어빵1"
    $붕어빵2 = new 붕어빵; // 인스턴스 "붕어빵2"
    $붕어빵3 = new 붕어빵; // 인스턴스 "붕어빵3"

    $붕어빵1->make("특급밀가루");
    $붕어빵2->make("중급밀가루");
    $붕어빵3->make("저급밀가루");…
    작성자최고관리자 시간 02-07 조회 1431
  • 웹파일 압축기[ZIP] - HOWORLD.COM




    웹파일 압축기[ZIP] - HOWORLD.COM






    작성자최고관리자 시간 01-16 조회 2273
  • 파일 불러오고 내용 수정하기
    index.php(한줄이 소스 원래대로 하기)


    [출처] 제트스윙 블로그 - http://www.zetswing.com…
    작성자최고관리자 시간 01-16 조회 1356
  • php 소스 암호화 php_screw
    출처 : http://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1727&sca=1
    수정 : 양성열
    다운 : http://downloads.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fphp-screw%2Ffiles%2Fphp-screw%2F1.5%2F&ts=1302854200&use_mirror=cdnetworks-kr-1

    서론

    php 소스 개발을 하다보면 공개하기가 꺼려지는 소스가 있기 마련입니다. 또한 디비 커넥트 설정과 계정정보 및 서버 설정에 대한 php 소스코드 들은 암호화가 해킹에 대한 최소한의 예방책일 것이다. 이러한 소스 암호화 툴로는 Zend , 이온큐브 쪽 솔루션이 잘 알려져 있습니다. 실제 여러업체에서 사용중이며 안정적입니다. 물론 유료화 버젼입니다. 하지만 무료버전의 암호화 툴도 있습니다. 오픈소스인 php_screw 입니다.
    해당 솔루션은 일본의 ThePM9.com 이라는 개발업체에서 만들어 졌으며, 현재는 1.5버전까지 개발 되어 졌습니다. php 소스코드를 암호화된 파일로 생성하는 실행 파일과 이를 Zend - Compile에 전달 되기전에 해독하는 php 모듈 형태로 이루어 집니다.

    어떠한 방법으로 암호화하는지는 공개 하지 않을 sourceforge를 통해 해당 소스를 다운 받아 php 동적 모듈을 생성 추가 하는 형태 입니다. 아래부터는 해당 모듈의 설치 법에 대해서 알아 보고겠습니다.


    본론

    1. 설치 조건
    다운 받은 소스상 README 파일을 읽어보시면 알 수 있겠지만 php_screw-1.5버젼은 PHP5.x 버젼에 zlib 이 설치 되어있어야 하며, UNIX 계열 ( 리눅스 , FreeBSD 등) 에서만 지원 합니다. 그런데 php4 버젼에서도 설치 및 운영이 잘됩니다. (당연한 말씀이겠지만 php가 동적으로 설치 되어 있어야 합니다.)

    2. sourceforge를 통해 해당 파일을 다운 받습니다. (http://sourceforge.net/projects/php-screw/)

    3. 저는 해당 소스를 /usr/local/src 디렉토리에 옮겨 놓았습니다.
    [root@localhost src]# pwd
    /usr/local/src
    [root@localhost src]# ls
    php_screw-1.5.tar.gz

    4. 소스 압축 해제
    [root@localhost src]# tar xvzf php_screw-1.5.tar.gz
    php_screw-1.5/
    php_screw-1.5/zencode.c
    php_screw-1.5/LICENSE
    php_screw-1.5/tools/
    php_screw-1.5/tools/zencode.c
    php_screw-1.5/tools/Makefile
    php_screw-1.5/tools/screw.c
    php_screw-1.5/config.h
    php_screw-1.5/README.en
    php_screw-1.5/config.m4
    php_screw-1.5/Makefile.in
    php_screw-1.5/php_screw.c
    php_screw-1.5/php_screw.h
    php_screw-1.5/my_screw.h
    php_screw-1.5/README.jp

    5. phpize 명령어를 이용하여 서버 정보에 맞는 configure 생성
    [root@localhost src]# cd php_screw-1.5
    [root@localhost php_screw-1.5]# /usr/local/php/bin/phpize
    Configuring for:
    PHP Api Version: 20020918
    Zend Module Api No: 20020429
    Zend Extension Api No: 20050606

    6. 생성된 소스 확인
    [root@localhost php_screw-1.5]# ll
    합계 800
    -rw-rw-rw- 1 root root 1388 1월 12 2004 LICENSE
    -rw-r--r-- 1 root root 3151 4월 4 00:10 Makefile.global
    -rw-rw-rw- 1 root root 245 8월 1 2002 Makefile.in
    -rw-rw-rw- 1 root root 4052 10월 14 2007 README.en
    -rw-rw-rw- 1 root root 3290 10월 14 2007 README.jp
    -rw-r--r-- 1 root root 52186 4월 4 00:10 acinclude.m4
    -rw-r--r-- 1 root root 174501 4월 4 00:10 aclocal.m4
    drwxr-xr-x 2 root root 4096 4월 4 00:10 autom4te.cache
    drwxr-xr-x 2 root root 4096 4월 4 00:10 build
    -rwxr-xr-x 1 root root 41134 4월 4 00:10 config.guess
    -rw-r--r-- 1 root root 1644 10월 13 2007 config.h
    -rw-r--r-- 1 root root 1540 4월 4 00:10 config.h.in
    -rw-rw-rw- 1 root root 593 4월 17 2002 config.m4
    -rwxr-xr-x 1 root root 29708 4월 4 00:10 config.sub
    -rwxr-xr-x 1 root root 279525 4월 4 00:10 configure
    -rw-r--r-- 1 root root 2226 4월 4 00:10 configure.in
    -rw-r--r-- 1 root root 0 4월 4 00:10 install-sh
    -rw-r--r-- 1 root root 143988 4월 4 00:10 ltmain.sh
    -rw-r--r-- 1 root root 0 4월 4 00:10 missing
    -rw-r--r-- 1 root root 0 4월 4 00:10 mkinstalldirs
    -rw-rw-rw- 1 root root 63 8월 1 2002 my_screw.h
    -rw-rw-rw- 1 root root 3142 10월 14 2007 php_screw.c
    -rw-rw-rw- 1 root root 194 8월 1 2002 php_screw.h
    drwxrwxrwx 2 root root 4096 10월 14 2007 tools
    -rw-rw-rw- 1 root root 1772 10월 14 2007 zencode.c

    7. SEED key 변경
    - README를 잘 읽어보시면 알겠지만 암호화 할때 특정 키값에 따라 암화된 값이 달라집니다.
    그러므로 각자가 원하시는 값으로 변경 하시면 됩니다. my_screw.h 의 배열의 값을 변경 하시면 됩니다.
    값의 크기에 따른 속도 차이는 없다고 합니다. (기존의 seed key값 보다는 작게 설정한다.)

    [root@localhost php_screw-1.5]# cat my_screw.h
    short pm9screw_mycryptkey[] = {
    11152, 368, 192, 1281, 62
    };

    8. 컴파일 환경 설정
    [root@localhost php_screw-1.5]# ./configure --with-php-config=/usr/local/php/bin/php-config

    9. 컴파일
    [root@localhost php_screw-1.5]# make

    ※ make시 에러
    /usr/local/src/php_screw-1.5/my_screw.h:2: warning: overflow in implicit constant conversion
    /usr/local/src/php_screw-1.5/php_screw.c: In function 'pm9screw_compile_file':
    /usr/local/src/php_screw-1.5/php_screw.c:78: error: too few arguments to function 'org_compile_file'
    /usr/local/src/php_screw-1.5/php_screw.c:84: error: too few arguments to function 'org_compile_file'
    /usr/local/src/php_screw-1.5/php_screw.c:93: error: too few arguments to function 'org_compile_file'
    make: *** [php_screw.lo] 오류 1

    php_screw.c파일에서 오류나는 라인 78,84,93 수정

    org_compile_file(file_handle, type); 이부분을 아래와 같이 수정
    org_compile_file(file_handle, type TSRMLS_CC);


    10. 모듈 확인
    [root@localhost php_screw-1.5]# ll modules/
    합계 32
    -rw-r--r-- 1 root root 721 4월 4 00:25 php_screw.la
    -rwxr-xr-x 1 root root 26781 4월 4 00:25 php_screw.so

    11. 모듈 위치 지정
    - 모듈을 확인 하고 make install 을 통해 자동으로 모듈을 특정 디렉토리를 이동 할 수 있지만 경로명이 직관적이지 않아 자체디렉토리를 만들어 줍니다.
    [root@localhost php_screw-1.5]# mkdir /usr/local/lib/php_modules
    [root@localhost php_screw-1.5]# mv modules/php_screw.so /usr/local/lib/php_modules

    12. php.ini 설정
    - php.ini 의 설정을 통해 해당 모듈을 로드할 수 있게 합니다. 아래와 같이
    [root@localhost php_screw-1.5]# vi /usr/local/lib/php.ini
    ......
    extension_dir = "./" 을 extension_dir = "/usr/local/lib/php_modules" 로 수정 및 아래 내용 추가
    extension=php_screw.so
    .....

    13. 모듈 확인
    - 아파치 재시작 후 모듈 확인
    [root@localhost php_screw-1.5]# /usr/local/apache/bin/apachectl restart
    [root@localhost php_screw-1.5]# php -i | grep php_screw
    php_screw
    php_screw support => enabled
    PWD => /usr/local/src/php_screw-1.5
    _SERVER["PWD"] => /usr/local/src/php_screw-1.5
    _ENV["PWD"] => /usr/local/src/php_screw-1.5
    [root@localhost php_screw-1.5]#

    14. 암호화 명령어 컴파일
    - 모듈 추가가 완료 되면 소스를 암호화하는 툴을 컴파일 해야 합니다.
    해당 소스트 tools 라는 디렉토리에 있습니다.
    [root@localhost php_screw-1.5]# cd tools/
    [root@localhost tools]# pwd
    /usr/local/src/php_screw-1.5/tools

    15. 컴파일 및 결과 확인
    [root@localhost tools]# make
    gcc -o screw screw.c zencode.c -lz
    [root@localhost tools]# ll
    합계 24
    -rw-r--r-- 1 root root 105 10월 14 2007 Makefile
    -rwxr-xr-x 1 root root 8644 4월 4 00:34 screw
    -rw-rw-rw- 1 root root 1541 10월 14 2007 screw.c
    -rw-rw-rw- 1 root root 1772 10월 14 2007 zencode.c

    16. screw 라는 명려어를 이용해서 암호화하기
    - 사용하기 쉽게 path가 잡혀있는 경로 이동 하기 것이 좋을듯합니다.
    - test.php 자연수를 입력 받아 구구단을 출력하는 소스입니다.
    [root@localhost tools]# mv screw /usr/local/bin
    [root@localhost tools]# cd /home/test/public_html/
    [root@localhost public_html]# ll
    합계 4
    -rw-r--r-- 1 root root 1398 4월 4 00:39 test.php
    [root@localhost public_html]# screw test.php
    Success Crypting(test.php)
    [root@localhost public_html]# ll
    합계 8
    -rw-r--r-- 1 root root 768 4월 4 00:44 test.php
    -rw-r--r-- 1 root root 1398 4월 4 00:44 test.php.screw

    17. 암호화 파일 확인 및 원소스 삭제
    - 위의 결과와 같이 소스이름뒤 .screw 가 붙은 파일이 원 소스이다. 백업 후 삭제 해준다.
    - 암호화 파일 확인
    [root@localhost public_html]# cat test.php

    결론

    설치 및 운영에는 특별히 신경 쓴 부분이 없다. 그러나 서버 이전시 문제 되는 부분이 있다. my_screw.h 에 설정된 SEED key 값을 모르게 된다면 아무리 모듈을 만들어도 해당 소스 웹출력이 되지 않습니다. 원 소스 백업이 중요하며 해당 SEED key 값도 백업 해 놓는것도 중요합니다.…
    작성자최고관리자 시간 02-23 조회 2783
  • RSS 강좌 - PEAR를 이용한 RSS 기능 구현
    RSS 강좌 - PEAR를 이용한 RSS 기능 구현…
    작성자최고관리자 시간 01-12 조회 1512
  • pear 기본사용 - DB편
    http://ceomk.tistory.com/48
    설치 기본 설명 페이지



    작성자최고관리자 시간 01-12 조회 1947
  • pear란 무엇인가.
    PEAR는 PHP Extension and Application Repository의 약자다. 번역하면? PHP 확장과 응용 프로그램 저장소 정도 되겠다.

    PEAR는 재사용 가능한 PHP 컴포넌트를 위한 프레임워크이자 배포 시스템입니다.

    pear 란, java jdbc 같은 용도로 사용하는 놈인데 구지 PEAR가 뭔지 알 필요는 없습니다.
    그냥 좋으니까 쓰면 되는것이죠.
    간단히 이야기하자면 ASP처럼 쉽게 컴포넌트를 사용해 개발할수 있게 하면서 JSP처럼 강력한 효과를 낼 수 있는 획기적인 방법이라고 생각하시면 된다.…
    작성자최고관리자 시간 01-11 조회 2578
  • PHP 날짜관련함수 - date()
    //
    $today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
    $today = date("m.d.y"); // 03.10.01
    $today = date("j, n, Y"); // 10, 3, 2001
    $today = date("Ymd"); // 20010310
    $today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
    $today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day.
    $today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001
    $today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month
    $today = date("H:i:s"); // 17:16:17…
    작성자최고관리자 시간 08-08 조회 1489
  • php 설명 사이트
    http://www.php.net/manual/kr/index.php
    http://kr.php.net/manual/kr/function.explode.php
    한글 설명

    http://php.net/manual/en/function.explode.php
    영어 설명…
    작성자최고관리자 시간 04-30 조회 2593
  • php 내장함수 정리3 DB관련
    mssql_bind 저장프로시져 또는 원격저장프로시져의 인자를 추가한다
    mssql_close 디비연결을 닫는다
    mssql_connect int mssql_connect ( [string servername [, string username [, string password]]])
    mssql_data_seek 결과에서 row_number 로 열을 이동한다.
    mssql_execute 프로시져를 실행한다
    mssql_fetch_array mysql_fetch_array와 동일
    mssql_fetch_assoc 현재 행의 연관 배열에 의해 지정된 설정 결과를 반환합니다
    mssql_fetch_batch 반환 레코드의 다음 배치
    mssql_fetch_field 필드에 정보를 얻음
    개체의 속성이 있음:
    name - 만약 컬럼이 속성이 계산된 #N을 일련 번호로 설정된 함수의 결과면, 컬럼명이다.
    column_source - 칼럼 선택 테이블에서
    max_length - column의 최대 길이
    numeric - 1 숫자 열의 경우 입니다
    type - the column type.

    mssql_fetch_object Fetch row as object
    이 함수가 반환하는 필드 이름은 대소문자를 구별합니다.
    mssql_fetch_row 나열된 행을 배열로 잡는다.
    mssql_fetch_row를 결과 집합 이상 행을 호출 하거나, FALSE에서 다음 행을 반환합니다.
    mssql_field_length
    mssql_field_name field 명 반환
    mssql_field_seek 지정한 필드 오프셋을 탐색
    지정한 필드 오프셋을 찾습니다. mssql_fetch_field ()에 대한 다음 요청이 오프셋 필드를 포함하지 않으면, 이 필드를 반환합니다
    mssql_field_type Gets the type of a field
    mssql_free_result Free result memory
    mssql_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script ends. You may call mssql_free_result() with the result identifier as an argument and the associated result memory will be freed.
    mssql_free_statement Free statement memory
    mssql_free_statement() only needs to be called if you are worried about using too much memory while your script is running. All statement memory will automatically be freed when the script ends. You may call mssql_free_statement() with the statement identifier as an argument and the associated statement memory will be freed.
    mssql_get_last_message Returns the last message from the server
    mssql_guid_string Converts a 16 byte binary GUID to a string
    mssql_init Initializes a stored procedure or a remote stored procedure
    mssql_min_error_severity Sets the lower error severity
    mssql_min_message_severity Sets the lower message severity
    mssql_next_result Move the internal result pointer to the next result
    mssql_num_fields Gets the number of fields in result
    mssql_num_rows Gets the number of rows in result
    mssql_pconnect Returns: A positive MS SQL persistent link identifier on success, or FALSE on error.
    This type of links is therefore called 'persistent'.
    mssql_query Send MS SQL query
    mssql_result returns the contents of one cell from a MS SQL result set. The field argument can be the field's offset, the field's name or the field's table dot field's name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), it uses the alias instead of the column name.
    When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than mssql_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.
    mssql_rows_affected Returns the number of records affected by the query
    mssql_select_db Select MS SQL database…
    작성자최고관리자 시간 03-16 조회 2281
  • php 내장함수 정리2
    abs() 절대값을 리턴한다
    acos() 라디안으로 주어진 값을 아크코사인값을 리턴한다
    addcslashes() 문자열앞에 역슬레쉬를 추가한다
    addslashes() ,",\ 앞에 역슬래쉬를 추가한다
    array() 배열을 만든다
    array_count_values() 배열안의 매게변수와 동일한 값이 몇번들어있는지 리턴한다
    array_flip() 배열의 키와값을 바꾼다
    array_keys() 배열의모든키를 반환한다.
    array_merge() 두개이상의 배열을 합칩니다.
    array_pad() 새로운요소를 추가합니다.
    array_pop() 배열의 마지막요소를 삭제하고 리턴합니다.
    array_push() 배열의 마지막에 하나이상의 요소를 추가합니다.
    array_reverse() 배열을 역순으로 뒤바꿉니다.
    array_shift() 배열의 처음요소를 없애고 리턴한다.
    array_splice() 배열의 일부분을 대체한다.
    array_unshift() 배열맨앞에 하나이상의 요소를 추가합니다.
    array_values() 키값을제외하고 값을 배열로 반환한다
    array_walk() 배열의 모든요소에 함수를 적용한다.
    arsort() 키와값의 관계를 유지하고 값의역순으로 정렬한다
    asin() 라디안값을 아크사인값으로 리턴한다
    asort() 키와값의 관계를 유지하면서 값을 정렬한다.
    atan() 라디안값을 아크탄젠트값으로 리턴한다
    atan2() y/x 의 아크탄젠트값을 리턴한다
    base64_decode() MINE base64로 인코딩된 것을 디코딩한다.
    base64_encode() MINE base64로 인코딩한다
    basename() 파일경로에서 파일이름만 반환한다.
    base_convert() 진법을 변환한다.
    bin2hex() 2진수를 16진수로 반환한다
    bindec() 2진수인 인자를 10진수로 리턴한다
    ceil() 메게변수의 올림값을 리턴한다
    checkdnsrr() 인터넷 호스트 네임이나 IP 어드레스에 대응되는 DNS 레코드를 체크함
    chgrp() 파일그룹을 변경한다.
    chmod() 파일모드를 변경한다.
    chop() 뒤쪽공백을 제거한다.
    chown() 파일소유자를 변환한다.
    chr() 아스키에 해당하는 문자를 리턴한다
    chunk_split() 문자열을 작은 문자열로 분할한다
    clearstatcache() 파일 상태캐시를 삭제한다.
    compact() 변수의 이름과 값을 가지는 배열을 만든다
    convert_cyr_string() 키릴문자셋을 다른문자로 변환한다.
    copy() 파일을 복사한다.
    cos() 코사인값을 리턴한다
    count() 변수의 개수를 리턴합니다.
    crc32() 문자열로된 CRC32 다항식을 계산한다
    crypt() 문자열을 DES 암호화방법으로 암호화한다
    current() 포인터가 가르키는 값을 리턴합니다
    date() 주어진 함수의 타임스탬프를 지정한 포맷으로 변환한다
    decbin() 메게변수 10진수를 2진수로 리턴한다
    dechex() 16진수로 리턴한다
    decoct() 8진수로 리턴한다
    deg2rad() 각도를 동일한 라디안값으로 구한다
    dirname() 주어진 경로의 디렉토리 목록을 반환한다.
    diskfreespace() 디렉토리의 사용가능한 용량을 리턴한다
    doubleval() 변수의 실수(double)값을 구한다
    each() 포인터가 가르키는 키와값을 리턴한다
    echo() 문자열을 출력한다.
    empty() 변수의 설정여부를 리턴한다.
    end() 포인터를 마지막으로 옮긴다.
    exp() 자연대수 2의 arg승을 구한다
    explode() 문자열은 분리해서 배열로반 환한다
    extract() 배열에서 키와값을 변수와값으로 추출한다
    fclose() 열려진 파일을 닫는다.
    feof() 파일포인터가 끝에 있는지 검사한다
    fgetc() 파일포인터의 한문자를 반환한다.
    fgetcsv() 한줄을 읽고 CSV에 맞게 변환한다.
    fgets() 지정된 파일에서 한 줄을 읽어온다
    floor() 내림값을 리턴한다
    getimagesize() gif,jpg,png의 이미지크기를 반환한다
    getrandmax() rand()함수에의한 리턴값의 최대를 리턴한다
    gettype() 인자로 사용된 변수의 타입을 리턴한다
    get_html_translation_table() 내부적으로 사용된 변환테이블을 반환한다
    get_meta_tags() 파일에서 메타테그를 추출해배열로 반환한다
    hexdec() 16진수를 10진수로 리턴한다
    htmlentities() 해당되는 모든문자를 HTML엔티티형태로 변환한다
    htmlspecialchars() 특수문자를 HTML엔티티형태로 바꾼다
    imagearc() 타원을 그린다.
    imagechar() 수평으로 한문자를 그린다
    imagecolorallocate() 이미지에 색을 할당한다
    imagecolorat() 이미지 픽셀의 색을 리턴한다
    imagecolorclosest() 비슷한 색을 리턴한다
    imagecolorexact() 특정색과 같은색을 리턴한다
    imagecolorresolve() 같은,대체할수있는 가까운색을 리턴한다
    imagecolorset() index을 지정한 rgb로 대체한다
    imagecolorsforindex() index의 rgb값을 배열로 리턴한다
    imagecolorstotal() 색의 갯수를 리턴한다
    imagecolortransparent() 색을 투명하게 바꾼다
    imagecopyresized() 이미지의 부분을 복사하고 크기조정을 한다
    imagecreate() 새로운 이미지를 생성한다
    imagecreatefromgif() 파일로부터 이미지 id를 리턴한다
    imagedashedline() 점선을 그린다.
    imagedestroy() 이미지id를 없앤다
    imagefill() 색으로 채운다
    imagefilledpolygon() 다각형을 그린다.
    imagefilledrectangle() 직사각형을 그린다
    imagefilltoborder() col색으로채운다
    imagefontheight() 폰트의 높이를 리턴한다
    imagefontwidth() 폰트의 넓이를 리턴한다.
    imagegif() 브라우저나 파일로 gif형식으로 출력한다
    imageinterlace() 인터레스의 기능을 on,off한다
    imageline() 선을 그립니다.
    imageloadfont() 새로운 폰트를 불러온다.
    imagepolygon() 다각형을 그린다
    imagepsbbox() 포스트스크립타입1의 글꼴을 사용해 텍스트경계를지정한다
    imagepsencodefont() 글꼴의 문자 인코딩 벡터를 변경한다
    imagepsfreefont() 포스트스크립타입1폰트를 위해 사용된 메모리를해제한다
    imagepsloadfont() 파일로부터 포스트스크립타입1글꼴을 로드한다
    imagepstext() 이미지에 포스트스크립타입1글꼴로 문자열을 그린다
    imagerectangle() 사각형을 그린다
    imagesetpixel() 지정된 좌표에 픽셀 한개를 출력한다
    imagestring() 문자열을 가로로 그린다
    imagestringup() 문자열을 세로로 그린다
    imagesx() 이미지의 가로크기를 구한다
    imagesy() 이미지의 세로크기를 구한다
    ImageTTFBBox() 트루타입글꼴의 경계 영역을 계산해 반환한다
    ImageTTFText() 트루타입글꼴로 문자열을 출력한다
    implode() 지정된문자를포함해 배열을 하나의 문자열로 연결한다
    intval() 변수가 가지고 있는 정수값을 리턴한다
    in_array() 배열에서 needle을 찾아서 있으면 true, 없으면 false를 리턴한다
    isset() 변수의 설정 여부 확인
    is_array() 배열여부 확인
    is_double () 인자의 타입이 Double형배열인지 확인
    is_float() 인자의 타입이 float형인지 확인
    is_int() 인자의 타입이 int형인지 확인
    is_integer () 인자의 타입이 integer형인지 확인
    is_long() 인자의 타입이 long형인지 확인
    is_object() 인자가 객체인지 확인
    is_real() 인자의 타입이 double형인지 확인
    is_string() 인자로 사용된 변수가 문자열인지 확인
    join() impolde()함수와 동일
    key() 포인터가 가르키는 위치의 키값을 리턴한다
    krsort() 배열을 키값의 역순으로 정렬합니다.
    ksort() 배열의키값을기준으로 정렬합니다.
    list() 변수를 배열처럼 사용한다
    log() 자연로그값을 리턴한다
    log10() 상용로그값을 리턴한다
    ltrim() 문자열의 앞부분에 있는 공백 문자를 제거한다.
    max() 인자들중 가장큰 값을 리턴한다
    md5() 문자열의 MD5 해시를 계산한다
    metaphone() 문자열의 메타폰키를 계산한다
    min() 인자들중 가장작은값을 리턴한다
    mktime() 주어진 날짜를 타임스탬프로 변환한다.
    mt_getrandmax() mt_rand()에 의해 리턴될 수 있는 최대값을 리턴한다
    mt_rand() 난수를 리턴한다
    mt_srand() 난수발생기를 초기화한다
    mysql_affected_rows() 최근 궈리작업으로 처리된 행의 수를 구한다.
    mysql_change_user() 사용자를 변경한다.
    mysql_close() 연결을 닫는다.
    mysql_connect() 서버에 접속한다.
    mysql_create_db 데이터베이스를 생성한다.
    mysql_data_seek() 내부적인 결과 포인트를 이동한다.
    mysql_db_query() 질의를 전송한다.
    mysql_drop_db() 데이터베이스를 삭제한다.
    mysql_fetch_array() 쿼리 결과배열은 한줄씩 리턴한다.
    mysql_fetch_field() 결과로부터 열 정보를 얻어서 객체로 반환한다.
    mysql_fetch_lengths() 결과로부터 가 출력의 길이를 반환한다.
    mysql_fetch_object() 행의 결과를 객체로 반환한다.
    mysql_fetch_row() 쿼리결과를 한행씩 스칼라 배열로 리턴한다.
    mysql_field_flags() 특정 필드의 flag 들을 구한다
    mysql_field_len() 특정 필드의 길이를 리턴한다.
    mysql_field_name() 결과로부터 특정 필드 이름을 반환한다.
    mysql_field_seek() 특정 필드의 오프셋으로 위치를 이동한다.
    mysql_field_table() 특정 필드의 table의 이름을 리턴한다
    mysql_field_type() 특정 필드의 type을 리턴한다
    mysql_free_result() 인자값을 메모리에서 지웁니다.
    mysql_insert_id() 삽입에 의해 생성된 인덱스넘버를 리턴한다
    mysql_list_dbs() DB 리스트를 구한다.
    mysql_list_fields () 필드의 리스트를 구한다.
    mysql_list_tables() DB내의 테이블 리스트의 포인터를 리턴한다.
    mysql_num_fields() 쿼리결과내의 필두수를 리턴한다.
    mysql_num_rows() 질의결과의 행수를 리턴한다.
    mysql_pconnect() 디비서버에 지속적인 연결을한다.
    mysql_query() 질의 보낸다.
    mysql_result() 결과에서 데이터를 구한다.
    mysql_select_db() 사용할 디비를 선택한다.
    mysql_tablename() 테이블명을 리턴한다.
    next() 배열의 다음포인터로 이동하여 값을 리턴한다
    nl2br() 개행문자를 태그로 변환한다.
    number_format() 수의 주어진 일정한 형식으로 리턴한다
    octdec() 8진수를 10진수로 리턴한다
    ord() 문자열에 있는 첫번째 문자의 ASCII 코드 값을 변환한다.
    parse_str() 문자열을 변수로 해석한다
    parse_url() URL을 해석해서 각 구성요소를 반환한다.
    pi() 파이값을 구한다
    pos() 배열릐 포인터가 가르키는 값을 리턴한다
    pow() base의 exp승을 리턴한다
    prev() 포인터를 앞으로 이동한후 값을 리턴한다
    print() 문자열을 출력
    printf() 지정된 형식에 맞게 문자열을 출력한다.
    quoted_printable_decode() 문자열을 8비트 문자열로 변환한다.
    quotemeta() 문자열에 .\\+*?[^]($)등의 메타문자앞에\를추가한다
    rand() 난수를 발생한다
    range() low부터 high까지의 정수들의 배열을 리턴한다
    rawurldecode() URL로 인코딩된문자열을 디코딩한다
    rawurlencode() RFC1738에 따라서 URL을 인코딩한다.
    reset() 배열의 포인터를 맨처음으로 이동하여 값을 리턴한다
    round() 반올림값을 리턴한다
    rsort() 배열의 값을 기준으로 역순정렬합니다
    rtrim() 문자열 끝에 있는 공백 문자, 개행문자를 제거한다.
    session_decode() 암호화된 문자열을 세션데이터로 해석한다
    session_destroy() 생성된 모든 세션을 파괴한다
    session_encode() 세션 데이터를 문자열로 인코딩한다
    session_id() 세션 아이디를 구하거나 변경한다.
    session_is_registered() 인자가 세션에 등록되었는지 검사
    session_module_name() 현재 세션요소를 구하거나 변경한다
    session_name() 세션의 이름을 설정한다.
    session_register() 현재 세션에 변수들을 등록한다.
    session_save_path() 현재 세션의 저장경로를 구하거나 변경한다
    session_start() Session을 시작
    session_unregister() 등록된 변수를 제거한다.
    setlocale() 지역정보를 저장한다.
    settype() 변수 타입 설정
    shuffle() 배열을 랜덤하게 섞는다
    similar_text() 두 문자열사이의 유사성을 계산한다
    sin() 사인값을 리턴한다
    sizeof() 배열요소의 갯수를 반환한다.
    sort() 배열을 값을기준으로 순서대로 정렬합니다.
    soundex() 문자열의 soundex키를 계산한다
    sprintf() 지정된 출력형식문자열을 반환한다.
    sqrt() 제곱근을 리턴한다
    srand() 난수발생기를 초기화한다
    strcasecmp() 대소문자를 구분하지 않고 문자열을 비교한다
    strchr() 문자열에서 지정한 문자가 처음위치한부분부터반환한다.
    strcmp() 대소문자를 구분해서 두 문자열을 비교한다.
    strcspn() 마스크가 맞지 않는 초기 세크먼트의 길이를 반환한다
    stripcslashes() addcslashes()로 쿼트된 문자열을 언쿼트한다
    stripslashes() addslashes()로 쿼트된 문자열을 언쿼트한다
    strip_tags() 문자열로 부터 HTML,태그를 제거한다.
    stristr() 대소문자를구별않고 needle과 일치한부분부터리턴한다
    strlen() 문자열의 길이를 반환한다.
    strpos() 문자열에서 특정문자열이 있는 처음위치를 반환한다
    strrchr() 지정한 문자열이 있는 마지막의 위치부터 반환한다
    strrev() 문자열을 뒤집는다.
    strrpos() needle이 마지막으로 나타나는위치를 반환한다.
    strspn() 마스크에 일치하는 초기 세그먼트의 길이를 찾는다.
    strstr() 대소문자를구분하여 needle와 일치하는부분부터 반환한다.
    strtok() 문자열을 토큰화한다.
    strtolower() 문자열을 소문자로 변환한다.
    strtoupper() 영문자를 대문자로 변환한다.
    strtr() 특정문자를 번역한다.
    strval() 값을 문자열로 변환
    str_repeat() 문자열을 지정한 횟수만큼 반복한다.
    str_replace() subject에서 search를 replace로 대체한다.
    substr() 문자열의 일부분을 짤라서 반환한다.
    substr_replace() 문자열 일부만 지정된문자로 치환한다.
    tan() 탄젠트값을 리턴한다
    trim() 문자열의 앞뒤의 공백문자를 제거한다.
    uasort() 키,값을 유지하고 지정함수를 사용해 정렬합니다.
    ucfirst() 첫글자가 알파벳이면 첫문자만 대문자로 변환한다
    ucwords() 문자열의 각 단어의 첫글자를 대문자로 바꾼다.
    uksort() 키,값을 유지하고 지정함수를 이용 키값에 따라 정렬한다.
    unset() 변수의 설정을 해제
    urldecode() 인코딩된 URL문자열을 디코딩한다.
    urlencode() 문자열을 URL 인코딩한다.
    usort() 함수를 배열값에 적용하여 정렬합니다.…
    작성자최고관리자 시간 03-16 조회 3128

회원로그인

Copyright © 2001-2016 ITNANUM. All Rights Reserved..