웹마스터 팁

제목: 노프레임/카운터에 관련된 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 플레이어를
작성하는 기초를 적어보도록 하겠습니다.
변수 정의의 최소화, 구문의 간략화, 이것이 핵심이 될 것입니다.
제목 글쓴이 날짜
교육용 방명록 #8 [delete.php3파일에서 넘겨받은 비밀번호를 검사하여 글을 삭제합니다.] [18] zero 2000.07.03
MySQL 루트비번 분실시 대처요령 [29] zero 2001.04.18
노프레임/카운터에 관련된 PHP함수 팁 몇가지 [1] 차카게살자 2001.12.28
PHP 인증 페이지를 만들자! - Lesson 1 수정본 #2 ☺[폐]허접-_- 2002.01.24
PHP 인증 페이지를 만들자! - Lesson 2 수정본 #1 [5] ☺[폐]허접-_- 2002.01.24
회원관리 프로그램을 구현하고 싶은신 분들께.. [7] [폐]허접-_- 2002.03.18
PHP 인증 페이지를 만들자! - Lesson 3 수정본 #1 [3] ☺[폐]허접-_- 2002.01.24
M3U생성 프로그램을 통한 MP3실시간 듣기.. [11] ▒1q▒ 2001.09.13
배경 음악을 한번만 실행 시키기 - 쿠키이용 [4] 오기 2001.12.02
주소에서 음악 파일만 빼와 윈앰프로 실행하기 [1] file 오기 2001.12.04
[추천 팁] phpmyadmin 으로 복구 할때. 후니 2001.02.28
공부용 방명록이에욥^^. 주석왕창(페이지분할등.기능있어욥~) [2] 프리^^ 2001.04.16
최근게시물 - 첫글은 내용까지, 다음글부터 목록만... [15] СreдturЭ 2001.04.16
[APM] 한글, gif, jpeg, png 다되는 GD 설치 [4] 앤디(andy) 2001.05.22
GD를 이용해본 영어 발음기호 image출력 [3] 앤디(andy) 2001.05.24
쿠키 설정하고 불러올때 주의할점;; [윈도우 멀티부팅 사용하시는 초보분만] [9] daftya 2001.05.29
대화방을 만들어보쟈~ [20] 해그리드짱!!! 2001.06.03
자기 홈 또는 서버 연지 며칠이 지났는지 알 수 있는 php 소스 [15] 고종길 2001.06.03
홈페이지에 실시간뉴스 보여주기 [19] looster 2001.06.05
지금까지 살아온 날 계산해 주는 스크립트 [6] skyel 2001.07.20