전체 페이지뷰

레이블이 php인 게시물을 표시합니다. 모든 게시물 표시
레이블이 php인 게시물을 표시합니다. 모든 게시물 표시

2013년 4월 2일 화요일

php 쿠키 관련.

php에서는 setcookie 하고 나서 바로 사용 불가.
page refresh 또는 location 이 변경되어야 그때부터 사용가능.

몰랐네...아직도 기초가 부족한건가...

2011년 11월 29일 화요일

php 현재 페이지의 선언된 변수 목록 보기

get_defined_vars  : 이 함수는 get_defined_vars()를 호출하는 영역 안에 존재하는 모든 정의된 변수(환경변수, 서버나 유저 정의 변수) 목록을 포함하는 다차원 배열을 반환합니다.
 => 출력부분 위에서 선언된 변수만 나오는듯 하다. 다 볼려면, 맨 하단에서 출력해야할듯.

비슷한것.


  • get_defined_functions() - Returns an array of all defined functions







  • get_defined_constants() - 모든 상수와 그 값의 연관 배열을 반환합니다






  • 까먹을거 같아서 메모해둠.

    2009년 9월 4일 금요일

    [함수] mysql_affected_rows()

    이 함수는 INSERT, UPDATE, DELETE 등 데이타의 변화가 있을때

     

    변경된 row수를 리턴해준다.

     

    허나...UPDATE의 경우 실제로 UPDATE 쿼리는 성공했다고 하더라도

     

    이전 데이타와 변경하려는 데이타가 차이가 없을경우에도 0 을 리턴한다.

     

    예)

    test 테이블

     

                           user_id                   passwd
     abc  0000
     def  1111

     

    이라는 테이블이 있다고 가정하자.

     

    1. update test set passwd = 0000 where user_id = abc;   --> 데이타의 변화없음

    2. update test set passwd = 3333 where user_id = ghi;    --> 존재하지 않음

     

    위의 1번과 2번은 둘다 "Query OK, 0 rows affected"를 리턴한다.

     




     

     



     

    2008년 11월 24일 월요일

    php로 음력계산하기

    http://linuxchannel.net/gaggle/lunar.php

     

    알고리즘이 장난이 아니다...

     

    천문학에 전문적인 지식이 바탕이 되어야 할듯...

     

    오늘도 좌절했다 ㅡ.,ㅡ;;

    php를 사용하고 있는 사이트인가..??

    http://{검사할 url}/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

     

    즉 url뒤에 "?=PHPE9568F36-D428-11d2-A769-00AA001ACF42"

     

    이걸 붙이면 된다네..ㅎ

     

    걍 심심할때 알아보기정도다 ㅎㅎ

     

    2008년 11월 16일 일요일

    Exception.

    전에는 잘 이해가 안갔던 Exception.

     

    오늘 공부했는데...

     

    결론은 일반적인 php내의 오류 display를 좀 더 이쁘게 내맘대로 꾸미는것...?

     

    throw 했던 객체의 수만큼 catch문이 있어야 한다는...

     

    안그럼 치명적 오류 발생..이라네..ㅎ

     

    일단 현재로선 이정도 이해했음.

    2008년 10월 7일 화요일

    [펌]PHP 오류핸들링

    PHP에 있어서의 기본적인 오류 처리(Error Handling)는 매우 심플합니다.
    에러 메시지와 함께 파일 이름, 줄번호(line number)가 나오고
    에러를 설명하는 메시지가 브라우저로 보내집니다.




    PHP 오류 처리(Error Handling)

    스크립트나 웹애플리케이션을 만들때,
    오류 처리는 매우 중요한 부분입니다.

    만일 오류를 확인하는 코드가 허술하다면,
    우선은 웹애플리케이션이 매우 전문적이지 않은 사람이 만든
    인상을 주기 때문에 신뢰를 잃게 될것이고,
    무엇보다 여러 보안 문제에 노출되게 됩니다.

    이번 포스팅에서는 PHP에서 가장 흔히 쓰이는 오류 확인 방법에
    대해서 보여드릴려고 합니다.

    크게 다음과 같은 서로 다른 오류 처리방법에 대해 포스팅해 보겠습니다:

    • 간단한"die()"구문
    • 커스텀 에러(Custom error, =사용자 정의 오류)와 에러 트리거(Error trigger, =오류 발생 시키기)
    • 오류 보고하기


    기본 오류 처리: die() 함수 사용하기

    첫번째 예제는 텍스트 파일을 여는 간단한 스크립트 입니다.


    <?php
    $file=fopen("welcome.txt","r");
    ?>


    만약에 파일이 존재하지 않는다면, 아래와 같은 오류가 뜹니다:

    Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: 
    No such file or directory in C:\webfolder\test.php on line 2


    사용자에게 위와 같은 형태의 오류 메시지가 뜨는걸 방지하려면,

    파일에 접근하기 전에 존재하는지 미리 체크하면 되겠지요:

    <?php
    if(!file_exists("welcome.txt"))
    {
    die("File not found");
    }
    else
    {
    $file=fopen("welcome.txt","r");
    }
    ?>


    이제 파일이 존재하지 않는다면 다음과 같은 메시지가 화면에 뜹니다:

    File not found

    위의 코드는 맨 처음의 코드보다 더 효과적입니다.

    처음에는 아예 오류를 처리하는 부분이 없었지만 위의 코드는

    간단한 오류 처리 방식을 통해 에러가 발생했을때 스크립트의 실행을

    멈출 수 있기 때문입니다.


    하지만, 그냥 단순히 스크립트를 멈추는것이 항상 옳은 방법인것은

    아닙니다. 이번에는 오류를 처리하는 PHP의 다른 함수와 방법을

    보도록 합시다.




    커스텀 에러 핸들러(Custom Error Handler, =사용자 정의 오류 처리기)

    커스텀 에러 핸들러(사용자 정의 오류 처리기)를 만드는 것은 상당히 쉽습니다.

    오류가 발생했을때 호출될 수 있는 자신만의 특별한 함수를 만들면 됩니다.


    이 사용자 자신이 만든 함수는 최소한 두개의 매개변수(에러 레벨과 에러 메시지)를 처리 할 수 있어야 하지만 다섯개까지 매개변수를 지정할 수 있습니다.

    (부가적으로 추가할 수 있는 매개변수: 파일, 줄번호, 오류 컨텍스트)


    문법


    오류_처리할_함수_이름(error_level,error_message,
    error_file,error_line,error_context)

    매개변수
    설명
    error_level 필수. 사용자 정의 에러를 위한 에러 리포트의 레벨을
    상술합니다. 번호값 이어야만 합니다. 아래쪽이 표에 가능한 에러 리포트 레벨들이 있습니다.
    error_message 필수. 사용자 정의 에러를 위한 오류 메시지를 상술합니다.
    error_file 선택적. 에러가 발생한 파일 이름을 상술합니다.
    error_line 선택적. 에러가 발생한 줄번호(line number)를 상술합니다.
    error_context 선택적. 에러가 발생했을때 모든 변수와 그 변수의 값을 담은 배열을 상술합니다.


    에러 리포트 레벨 (= 오류 보고 수준)

    이 에러 리포트 레벨(오류 보고 수준)들은 사용자 정의 에러 핸들러를 위해 사용될 수 있는 서로 다른 유형의 에러 입니다:


    상수
    설명
    2 E_WARNING 치명적이지 않은 런타임 에러입니다.
    스크립트의 실행은 중지되지 않습니다.
    8 E_NOTICE 스크립트가 오류일 수 있는것을 발견했지만, 정상적으로 스크립트를 실행할때도 발생할 수 있는것을 찾아냈을때 뜨는 런타임 통지 입니다.
    256 E_USER_ERROR 사용자가 만들어낸 치명적인 에러 입니다. trigger_error() 함수를 이용해서 설정한 E_ERROR와 유사합니다.
    512 E_USER_WARNING 사용자가 생성한 치명적이지 않은 경고 입니다. trigger_error() 함수를 이용해서 설정한 E_WARNING과 유사합니다.
    1024 E_USER_NOTICE 사용자가 생성한 통지 입니다. trigger_error() 함수를 이용해서 설정한 E_NOTICE와 유사합니다.
    4096 E_RECOVERABLE_ERROR 잡아낼 수 있는 치명적 에러. E_ERROR과 유사하지만, 사용자 정의 핸들을 통해 잡아낼 수 있습니다. (set_error_handler()을 한번 보세요.)
    8191 E_ALL E_STRICT 레벨을 제외한 모든 에러와 경고 입니다. (E_STRICT는 PHP 6.0에서 E_ALL의 한 부분이 될 예정입니다.)


    이제 오류를 처리할 수 있는 함수를 만들어 봅시다:

    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr<br />";
    echo "Ending Script";
    die();
    }

    위의 코드는 간단한 에러 핸들링(오류 처리) 함수 입니다.

    이 함수가 실행되면, 에러 레벨(오류 수준)과 에러 메시지를 받아오게 됩니다.


    그리고 나서는 에러 레벨과 메시지를 출력하고 스크립트를 중지 시킵니다.


    이제 오류를 처리하는 함수를 만들었고

    언제 실행되어야 할지 결정해야할 차례군요.


     



    에러 핸들러(오류 처리기) 설정하기

    PHP를 위한 기본 에러 핸들러(오류 처리기)는 내장 오류 처리기 입니다.

    스크립트가 실행되는 동안 위의 함수가 기본 에러 핸들러(오류 처리기)가 되도록 만들어 봅시다.


    몇 가지 에러에만 적용되도록 에러 핸들러(오류 처리기)를 변경하는게 가능하고, 그러한 방법으로 스크립트가 서로 다른 에러를 서로 다른 방법으로

    처리하는게 가능해 집니다.


    하지만, 이 예제에서는 만들어놓은 커스텀 에러 핸들러(사용자 정의 오류 처리기)를 모든 오류를 처리하도록 사용하도록 해보겠습니다:

    set_error_handler("customError");

    직접 만든 함수가 모든 오류를 처리하길 원했기 때문에

    set_error_handler() 에는 오직 하나의 매개변수만 넣으면

    됩니다.


    두번째 매개변수는 에러 레벨을 명기하기 위해 추가될 수 있습니다.


    예제

    존재하지 않은 변수를 출력하려고 함으로서 에러 핸들러(오류 처리기)를 시험해 보도록 합시다:

    <?php
    //error handler function
    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr";
    }
    //set error handler
    set_error_handler("customError");
    //trigger error
    echo($test);
    ?>


    위 코드의 출력 메시지는 아래와 같은 형태로 나와야 합니다:

    Custom error: [8] Undefined variable: test



    오류 발생시키기(Trigger an Error)

    사용자가 데이터를 입력할 수 있는 스크립트에서는,

    불법적인 입력이 발생했을때 오류를 발생시키는 것이 상당히 유용합니다.

    PHP에서는, 이걸 trigger_error() 함수를 통해 실행 할 수 있습니다.


    예제

    이 예제에서는 "test" 변수가 "1"보다 클 경우에 오류가 발생합니다:

    <?php
    $test=2;
    if ($test>1)
    {
    trigger_error("Value must be 1 or below");
    }
    ?>


    위 코드의 출력 결과는 아래와 같습니다:

    Notice: Value must be 1 or below
    in C:\webfolder\test.php on line 6

    에러는 스크립트내애서 원하는 곳이라면 어디에서나 발생 시킬 수 있고,

    두번째 매개변수를 추가함으로서 어떤 에러 레벨(오류 수준)이 발생되어야

    하는지 서술할 수 있습니다.


    가능한 에러 타입(오류 형태):

    • E_USER_ERROR - 사용자가 생성한 치명적 런타임 에러. 복구될 수 없는 에러들이 해당. 스크립트의 실행은 중지됨.
    • E_USER_WARNING - 사용자가 생성한 치명적이지 않은 런타임 경고. 스크립트의 실행은 중지되지 않음.
    • E_USER_NOTICE - 기본값. 사용자가 생성한 런타임 통지. 오류일수도 있지만, 스크립트가 일반적으로 실행중에도 발생할 수 있는 그런 형태의 에러.


    예제

    이 예제에서는 "test" 변수가 "1" 보다 크면 E_USER_WARNING가 발생하게 됩니다.

    E_USER_WARNING 이 발생하게 되면

    커스텀 에러 핸들러(사용자 정의 오류 처리기)를 이용하도록 하고

    스크립트를 종료시킵니다:

    <?php
    //error handler function
    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr<br />";
    echo "Ending Script";
    die();
    }
    //set error handler
    set_error_handler("customError",E_USER_WARNING);
    //trigger error
    $test=2;
    if ($test>1)
    {
    trigger_error("Value must be 1 or below",E_USER_WARNING);
    }
    ?>
     


    위 코드의 출력 결과는 아래와 같아야 합니다:

    Error: [512] Value must be 1 or below
    Ending Script

    지금까지 어떻게 자신만의 에러를 만들고, 어떻게 그걸 발생시킬 수 있는지를

    보셨습니다. 그럼 이젠, 오류 기록하기에 대해서 보도록 합시다.




    오류 기록하기(Error Logging)

    기본적으로 PHP는 php.ini 파일의 error_log 설정값이 어떻게 설정되어

    있는지에 기반해서, 에러 로그(Error log)를 서버의 로깅 시스템이나 파일로

    보냅니다.

    error_log() 함수를 이용함으로서, 에러 로그를 지정된 파일이나

    혹은 원격 목적지로 전송하는것이 가능합니다.


    오류 메시지를 이메일을 통해 여러분 자신에게 전송하는 것은

    특정 오류가 발생했는지 알게 될 수 있는 좋은 방법중 하나가

    될 수 있습니다.


     

    이메일(E-Mail)로 오류 메시지 전송하기

    아래의 예제 에서는 특정 오류가 발생할 경우

    에러 메시지가 담겨있는 이메일을 전송한 뒤 스크립트를 종료하도록 합니다:

    <?php
    //error handler function
    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr<br />";
    echo "Webmaster has been notified";
    error_log("Error: [$errno] $errstr",1,
    "someone@example.com","From: webmaster@example.com");
    }
    //set error handler
    set_error_handler("customError",E_USER_WARNING);
    //trigger error
    $test=2;
    if ($test>1)
    {
    trigger_error("Value must be 1 or below",E_USER_WARNING);
    }
    ?>


    위 코드의 출력물은 아래와 같을 겁니다:

    Error: [512] Value must be 1 or below
    Webmaster has been notified


    그리고 위의 코드를 통해 받게된 메일 메시지는 아래와 같을 겁니다:

    Error: [512] Value must be 1 or below

    이 방법은 모든 오류에 대해 사용되어서는 안될 것입니다.

    보통의 오류들은 PHP의 기본 로깅 시스템을 사용해서

    서버상에 기록되어야 합니다.

     

    출처 : http://sirjhswin.tistory.com/163

    2008년 8월 19일 화요일

    set_time_limit 함수 - 타임아웃 설정

    set_time_limit 함수 - 타임아웃 설정

    아파치등의 웹서버에 설정된 타임아웃,
    PHP에 설정된 타임아웃등으로 인해,
    CGI를 실행할 때 너무 많은 시간동안 프로그램이 돌면,
    강제로 정지됩니다.

    이때, 그 목숨을 좀 살려보려고 하는 명령어가 set_time_limit 입니다.
    가령, 30초까지만 수행되도록 한 서버인데, 자신의 프로그램이 30초가 넘도록 실행된다면, 중간에 멈춰버립니다. 그리고는 해당 URL을 찾지 못했습니다.라는 메시지를 뿌립니다.

    이럴땐, 그 프로그램에 set_time_limit(30);이라고 해보세요.그러면 프로그램이 수행되다가 그 명령어를 만나면,그 시점부터 30초를 연장해줍니다. (그 시점부터임!!!)

    아예, 스크립트가 모두 수행될 때까지 하려면,
    set_time_limit(0);
    이렇게 쓰면 됩니다

    php Allowed memory size of 8388608 bytes exhausted 오류

     

    8M 의 허용된 메모리를 다 썼다는 것이다.

    이런경우는 php.ini 를 열어 memory_limit 을 늘려주면 된다.
    PHP 가 DB나 파일에서 데이터를 읽어올때 부하가 걸리게 되면 위와같은 에러를 내보낸다.
    memory_limit 이란 하나의 스크립트가 할당 받을 수 있는 메모리의 최대 크기를 말하는 것인데  버그등으로 인해서 스크립트가 시스템의 메모리를 다 잡아먹는 일을 막기위한 일종의 보호장치인 것이다.

    # vi /etc/php.ini
    ...
    ;;;;;;;;;;;;;;;;;;;
    ; Resource Limits ;
    ;;;;;;;;;;;;;;;;;;;

    max_execution_time = 300     ; Maximum execution time of each script, in seconds
    max_input_time = 300    ; Maximum amount of time each script may spend parsing request data
    memory_limit = 16M      ; Maximum amount of memory a script may consume (8MB)


    위와같이 /etc/php.ini 를 열어 memory_limit 을 8M 에서 16M 로 늘린 후 문제를 해결했다.



    -------


    나두 얼마전에 이런경험 했는디...ㅎ

    서버변수 $_SERVER

    서버 변수: $_SERVER
    참고: 4.1.0부터 지원됨. 이전 버전은 $HTTP_SERVER_VARS을 사용함

    $_SERVER는 헤더, 경로, 스크립트 위치와 같은 정보를 포함하는 배열이다. 이 배열 안의 엔트리는 웹서버에 의해 생성된다. 모든 웹서버가 이런 것들을 제공한다는 보장은 없다. 서버는 어떤것은 빠뜨리거나 여기에서 목록화된 것 외의 것을 제공할수 도 있다. 이런 많은 수의 변수들은 CGI 1.1 specification에 기반하므로, 그런 변수들은 기대할수 있을것이다.

    이 변수는 '슈퍼전역', 또는 자동 전역, 변수이다. 즉 스크립트내의 모든 유효영역안에서 사용가능하다는 의미를 갖는다. $HTTP_SERVER_VARS를 사용할때와 같이 함수나 메소드 안에서 사용하기 위해 global $_SERVER;를 할 필요는 없다.

    $HTTP_SERVER_VARS는 동일한 초기 정보를 포함하지만, 자동전역은 아니다. ($HTTP_SERVER_VARS 와 $_SERVER는 다른 변수이고 PHP는 그변수들을 따로 다루게 된다는 것에 주의한다)

    register_globals 디렉티브가 설정되어있으면, 이 변수들은 스크립트의 전역 유효영역에서 사용이 가능해 진다. 즉 $_SERVER 와 $HTTP_SERVER_VARS 배열과 분리된다. 관련정보는 전역 등록 사용하기라는 이름의 보안 챕터를 참고한다. 이들 각각의 전역은 자동전역이 아니다.

    $_SERVER에서는 다음 구성요소를 확인할수도 있고 그렇지 않은수있다. 이 변수중 일부(심지어 모두)는 PHP가 커맨드 라인에서 수행되고 있을때에는 보여지지 않을것이다.



    'PHP_SELF'
    현재 실행중인 스크립트의 파일명이고, 도규먼트 루트에 상대적인 경로를 갖는다. 예를 들면, 주소 http://example.com/test.php/foo.bar의 스크립트에서 $_SERVER['PHP_SELF']은 /test.php/foo.bar이 될것이다.

    PHP가 커맨드 라인 프로세서로 실행중이면, 이 변수는 나타나지 않는다.

    'argv'
    스크립트로 전달되는 인자의 배열. 스크립트가 커맨드 라인에서 실행중이면, 이 변수는 C-스타일의 커맨드 라인 인자로 제공된다. GET 메소드에 의해 호출될때에는 이 변수는 질의 문자열(query string)을 포함할것이다.

    'argc'
    스크립트로 전달되는 커맨드 라인 인자의 갯수 (커맨드 라인에서 실행중일때)

    'GATEWAY_INTERFACE'
    서버가 사용하는 CGI 사양(specification)의 버전: 예를 들면, 'CGI/1.1'.

    'SERVER_NAME'
    현재 스크립트가 수행되고 있는 서버 호스트의 이름. 스크립트가 가상 호스트에서 수행중이면, 이 변수는 그 가상 호스트를 위해 정의된 값이 될것이다.

    'SERVER_SOFTWARE'
    서버 식별 문자열. 요구(ruquest)에 응답할때 헤더안에서 보여준다.

    'SERVER_PROTOCOL'
    페이지가 요청되어진 정보 프로토콜의 이름과 버전: 예를 들면, 'HTTP/1.0';

    'REQUEST_METHOD'
    페이지에 접근할때 사용된 요청 메소드 종류. 예를 들면,'GET', 'HEAD', 'POST', 'PUT'.

    'QUERY_STRING'
    페이지가 접근될때의 질의 문자열

    'DOCUMENT_ROOT'
    현재 스크립트가 수행중인 다큐먼트 루트 디렉토리. 서버 설정 파일에서 정의된다.

    'HTTP_ACCEPT'
    현재 요청에 대한 Accept: 헤더의 내용.

    'HTTP_ACCEPT_CHARSET'
    현재 요청에 대한 Accept-Charset: 헤더의 내용. 예를 들면'iso-8859-1,*,utf-8'.

    'HTTP_ACCEPT_ENCODING'
    현재 요청에 대한 Accept-Encoding: 헤더의 내용. 예를 들면: 'gzip'.

    'HTTP_ACCEPT_LANGUAGE'
    현재 요청에 대한 Accept-Language: 헤더의 내용. 예를 들면: 'en'.

    'HTTP_CONNECTION'
    현재 요청에 대한 Connection: 헤더의 내용. 예를 들면: 'Keep-Alive'.

    'HTTP_HOST'
    현재 요청에 대한 Host: 헤더의 내용.

    'HTTP_REFERER'
    현재 페이지에 대한 유저 에이전트를 참조하는 페이지의 주소. 모든 에이전트가 이 값을 갖지 않는다. 일부 에이전트는 HTTP_REFERER를 각 특성에 맞게 변경하는 기능을 제공한다. 간단히 말해서, 이 값은 신뢰할수 없다.

    'HTTP_USER_AGENT'
    현재 요청에 대한 User-Agent: 헤더 내용. 이 값은 페이지에 접근 중인 유저 에이전트를 표시하는 문자열이다. 표준적인 예로는: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). get_browser()로 이 값을 사용하여 유저 에이전트의 능력에 맞게 페이지의 출력을 조절할수 있다.

    'REMOTE_ADDR'
    현재 페이지를 보고있는 유저의 IP 주소.

    'REMOTE_HOST'
    현재 페이지를 보고있는 유저의 호스트명. 역방향 dns 검색이 유저의 REMOTE_ADDR를 위해 사용된다.

    참고: 웹서버는 이 변수를 생성할수 있도록 설정되어야 한다. 예를 들면 아파치에서는 httpd.conf안에서 HostnameLookups On 이 필요할것이다. gethostbyaddr()도 참고.

    'REMOTE_PORT'
    웹서버와 통신중인 유저 머신이 사용중인 포트.

    'SCRIPT_FILENAME'
    현재 수행되는 스크립트의 절대 경로명.

    참고: file.php, ../file.php처럼 스크립트를 상대 경로로 지정하여 CLI로 실행할 경우, $_SERVER['SCRIPT_FILENAME']은 사용자가 지정한 상대 경로를 포함합니다.


    'SERVER_ADMIN'
    웹서버 설정 파일안의 SERVER_ADMIN (아파치용) 디렉티브에 주어지는 값. 스크립트가 가상 호스트에서 수행중이면, 이 값은 그 가상호스트를 위해 정의되는 값이 될것이다.

    'SERVER_PORT'
    웹서버가 통신을 위해 사용중인 서버 머신의 포트. 초기 설정값으로 '80';이 될것이다. 예를 들어, SSL을 사용중이면, 안전한 HTTP 포트로 정의된 어떤 값으로도 변경할수 있다.

    'SERVER_SIGNATURE'
    활설화되어있다면, 서버가 생성하는 페이지에 추가되는 서버 버전과 가상 호스트명을 갖는 문자열.

    'PATH_TRANSLATED'
    현재 스크립트에 대한 파일시스템(다큐먼트 루트가 아님) 기반의 경로 서버가 virtual-to-real 매핑으로 설정되면 보인다.

    'SCRIPT_NAME'
    현재 스크립트의 경로를 갖는다. 이 값은 가리킬 필요가 있는 페이지에 유용하다.

    'REQUEST_URI'
    이 페이지에 접근하기 위해 주어지는 URI; 예를 들면,'/index.html'.

    'PHP_AUTH_USER'
    HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저에 의해 제공되는 username으로 설정된다.

    'PHP_AUTH_PW'
    HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저가 제공하는 password로 설정된다.

    'AUTH_TYPE'
    HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 인증 타입으로 설정된다.





    원문 : http://blog.naver.com/sommer06/80033931564




    서브도메인 세션공유

    세션 정보 세팅시


    최상단에 다음과 같이 추가


    // 서브도메인 로그인 인식
    $urlb = $_SERVER["HTTP_HOST"];
    $sub_domain = split("\.",$urlb);

    if($sub_domain[0] == "www") {

    for($i=1;$i$aurl .= ".";
    $aurl .= $sub_domain[$i];
    }

    } else {
    $aurl = ".".$urlb;
    }

    다음 아래와 같이 설정

    @session_save_path($session_tmp_path);
    session_cache_limiter('nocache, must-revalidate');
    session_set_cookie_params(0, "/", "$aurl"); //<-- 추가해주세요.
    session_start();

    세션 테스트 해보면

    2차 서브 도메인도 세션이 공유되는것을 알수 있다.



    원문 : http://blog.naver.com/hcege/90005093794