웹마스터 팁

제목: 노프레임/카운터에 관련된 PHP함수 팁 몇가지

## 글의 작성에 있어 경어체를 사용하지 않은 점 양해 바랍니다.


사례1> index.html과 같은 .html 문서에서 제로카운터의 .php3를 include 하였을 때 IP등 일부 변수가
제대로 넘어오지 않는데?

해결방안> 제로카운터를 구성하는 zerocounter.php3 파일을 수정한다.
수정할 곳은

$user_ip = $REMOTE_ADDR;
if(!isset($user_ip)) $user_ip = getenv("REMOTE_ADDR"); // 바로 이 라인을 추가한다.  isset() 함수는 대입한 변수가 할당되었는지 검사하며 굳이 이 함수를 사용하지 않고 !변수명 할 수도 있다.

$referer=$HTTP_REFERER;
if(!isset($referer)) $referer = getenv("HTTP_REFERER"); // 역시 이 라인을 추가한다.
if(!$referer) $referer="Typing or Bookmark Moving On This Site";

getenv("HTTP_USER_AGENT") //  이 변수 호출로 접속자 브라우져 정보를 알 수 있다.

getenv() 함수 사용시 유의할 점은 함수에 주어지는 인자값에 PHP 변수임을 나타내는 '$' 기호를
사용하지않고 일반 스트링 형태로 준다는 것을 상기하자.

제로카운터의 경우 .php3 확장자를 취하고 있어 PHP 3.0 구문으로 해석되며 이 과정에서
IP 주소와 접속경로로 사용되는 해당 변수가 제대로 작동되지 않는다.
getenv는 변수값을 읽어들이는 함수로써 PHP 3.0에 호환된다.
이것을 적용하면 요즈음 index.html에서 include시키는 제로카운터가 접속경로를 제대로 표시하지
못하는 문제를 해결할 수 있다.



사례2> 계정 서버의 PHP.INI 에서 특정 환경변수의 설정값을 알 수 있을까?

해결방안> 아래의 함수를 사용한다.

get_cfg_var("upload_max_filesize") // 이것은 최대 업로드 제한 크기 설정값을 읽어온다.
get_cfg_var("file_uploads") // 이것은 파일 업로드 가능 여부에 대한 flag를 읽어온다.
// 1은 업로드 가능, 0은 업로드 불가.
phpversion() // PHP 서버의 현재 버젼값을 알 수 있다.



사례3> 배열변수를 임의로 나열하고  이 배열변수를 참조함에 있어 별도로 배열변수의 총 배열크기를
지정하지않고 알 수 있을까?

해결방안> count() 라는 함수가 이 목적에 사용된다.
아래의 예를 살펴보자.

$temp[0] = "긴 텍스트 1";
$temp[1] = "긴 텍스트 2";

echo count($temp) // 2 라는 값이 반환된다.  $temp에 배열된 배열폭이 2개이다.



사례4> 위의 배열변수 관련하여 임의의 배열값, 즉 랜덤값을 취할 수 있는가?

해결방안> mt_rand() 라는 함수가 난수 발생에 사용된다.
아래의 예를 살펴보자.

$temp[0] = "긴 텍스트 1";
$temp[1] = "긴 텍스트 2";
$temp[2] = "긴 텍스트 3";

echo mt_rand(0, 2) // 난수 0과 2의 범위 값이 반환된다.

echo $temp[mt_rand(0, 2)]   // 난수 0과 2의 범위 값이 $temp 배열변수에서 해당 배열값을 반환시킨다.

이것을 좀 더 응용하면 최대 배열 폭을 자동으로 인식시킬 수도 있다.

echo $temp[mt_rand(0, count($temp) - 1)]

여기에서 count()는 $temp에 배열된 값의 갯수를 얻는데 뒤에 - 1 로 연산을 시킨 이유는?
그렇다.  배열의 시작이 0부터이므로 갯수는 항상 배열 숫자보다 1이 많게 되기 때문에 -1을 하면
정확한 배열 갯수가 대입된다.



사례4> 노프레임으로 작성한 홈페이지에서 현재 보고 있는 게시판이 어떤 게시판인지 알 수 있나?

해결방안> 우리는 제로보드에 해당 게시판 주소를 넘겨줄 때 zboard?id=bbs 형식이 된다는 걸 잘
알고 있다.  바로 여기에 답이 나와있는데 웹 문서 안에서 $id 변수를 참조하면 지금 보고 있는
게시판이 어느 게시판인지 알 수 있다.


글을 끝마치며.
위에 열거한 팁들은 제 홈페이지 PHP 프로그래밍하면서 아무것도 없는 빈 초석을 하나하나 쌓아가며
알아가다가 적용한 것들입니다.

언제가 될진 모르겠지만 시간이 허락된다면 이 다음에는 PHP로 MySQL 테이블을 사용하는 BGM 플레이어를
작성하는 기초를 적어보도록 하겠습니다.
변수 정의의 최소화, 구문의 간략화, 이것이 핵심이 될 것입니다.
제목 글쓴이 날짜
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 1 [17] 아이쿠 2002.08.30
array_multisort를 이용한 간단한 순위체크 [4] Doogi 2002.08.28
변수를 사용하여 echo로 변수값 출력하기. [7] ZipShin 2002.08.28
sleep() 제대루 쓰기... 요것두 [별루 알아도 도움 안되는 팁] [5] sMokaHallo 2002.08.24
[허접] implode() 함수로 배열을 변수로! Myzzix 2002.08.23
[허접] rand() 함수를 이용한 뒤죽박죽 날짜 출력 [5] Myzzix 2002.08.23
파일하나로 만드는 한줄 메모장(테마기능 포함) [8] Mr. JH 2002.08.22
PHP의 제어구조 [2] Mr. JH 2002.08.22
PHP 시간관련 함수 [3] Mr. JH 2002.08.22
PHP에서 사용하는 간단하지만 중요한 MySQL함수들 [3] Mr. JH 2002.08.22
꼭 알아야 하는 4가지 쿼리문 Mr. JH 2002.08.22
테이블 생성시 데이터베이스의 타입설정 [2] Mr. JH 2002.08.22
누구나 만들수있는 게시판 [글삭제, 수정 부분] [4] file Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글보기 view.php 부분] [1] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글목록 list.php 부분] [6] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [schema, write, write_ok] [10] Mr. JH 2002.08.21
제로 카운터 숫자 조정하기 [8] 이주경 2002.08.21
Print 이건또 뭐지? 사이트 찾다보니 있던데..^^ [13] ZipShin 2002.08.16
기초 통계 프로그램 for 귀차니스트;; [3] TheMics 2002.08.10
쓸모있는 PHP Tip (다 알구 있을런지 모르겠네여..^^) [1] 이삐아이(체리) 2002.08.09