웹마스터 팁

미리보기 : http://dongsung.hs.kr/login/login.php
해당 소스 미리보기 : http://dongsung.hs.kr/login/make_config.phps

제가 사용하고 있었던 소스가 그대로 올라가는 실수를 했습니다-_-;;;;

수정했습니다^-^/
---------------------------------------------------------------------
MySQL 사용않하는 인증 PHP 스크립트 입니다.
생각외로 알고싶어 하시는 분들이 많아서 허접한 솜씨로 올려봅니다...;
(물론 이 방법 외에도 더 좋은 방법이 있습니다.
이 방법은 제가 자주 쓰는 것이기 때문에..-ㅅ-;)
보안에도 아주!!!!!
미세하게(-ㅅ-;;) 신경을 쓸 것이기 때문에
상당히 소스가 길어질 겁니다'-';;;;;;

작성자 - [폐]허접-_- (윤종민) (저 입니다-ㅅ-;;;)

이 설명은 특정한 분들만 해당된 페이지에 들어갈 수 있도록 하는 겁니다'-';
- 만약 제가 올린 소스 그대로 해보셨는데 에러나셨으면 에러문장이 몇번 문장인지 코멘트로^-^

----------------------------------------------------------------

Lesson 2.


config.php 생성!!! 오우예!!!! 고조 이게 아주 와땀돠-_-)b
아싸 가오리~  へ( ̄▽ ̄)へ 훌렁훌렁...; (또 죄송-_-;;; 버릇이라;;;)



아....
Lesson 1에서 굿바이(-_-)/ 한지 정확히 3초만에 다시 뵙네요...;;
그래도 방갑습니다..ㅠ_-

쿨럭...;
2강 시작하겠습니다...;;
역시 마찬가지고 차근차근 읽어 주시는게 나라를 살찌우고 국력을 키우고
자라나는 새싹들에게 거름(-_-;)을 주고 궁시렁동시렁몽시렁 주절주절..;;;;


아!
1강에서 말씀드렸다시피 이 강의(?)가 끝날때까지 모든 파일은
PHP 파일로 제작됩니다-ㅅ-/

<--참고-->
디자인은 배제하고 짰기 때문에 무척 추합니다-_-;;
디자인은 각자 입혀주세요'-';;

시작~!

----------------------------------------------------------------


admin.php 에서 입력한 값을 전달받아 config.php 파일을 생성시키는
(이름한번 거창하네...거 뉘집자식인지..-ㅅ-a)

파일명 - make_config.php

<?

$fp = fopen("config.php","w");                        // config.php 라는 파일을 생성~~!
$name = array('$pass');                                // 배열변수 array~ 어뤠이~~~! (맞나-_-;)
fwrite($fp,"<?nn$name[0] = "$pass";nn?>n");        // 차후 설명;;;
echo "
<script>
window.alert('입력하신 Password : $passnn로 config.php 파일에 등록되었습니다.');
</script>
<meta http-equiv='refresh' content='0;URL=login.php'>
";        
fclose($fp);

?>


역시 1차적인 작업 끝났습니다..;
소스 무지 짧져?
정말 중요한 역활을 하는 파일인데 비해...;

이 소스 보시고..

"소스가 왜 이래! 이 쉑히 사이비아냐???"



.....-_-;

저 사이비 아닙니다...;
전 영원불멸 허접입니다-_-;;

그럼 위 소스들의 설명을 하겠습니다'-'/
(제 설명이 부족할 겁니다;;
제로님과 비혼님 강의를 보시는것이...;;;)


위 소스를 보시면..

$fp = fopen("config.php","w");

이런 문장이 있습니다'-'
fopen() 함수는 파일을 읽기나 쓰기 등 '지정한 모드'로 여는 것입니다'-'
여기서 지정한 모드란?

"w" 보이시져?

이게 제가 지정한 모드랍니다^-'/


각 모드들을 분류하고 설명 해드리겠습니다^-^

"r" = 파일을 Only 읽기 모드로 엽니다.
      파일 포인터는 해당 파일의 처음에 위치하게 되구여'-'/

"r+" = 파일을 읽기와 쓰기 모드로 엽니다.
       파일 포인터는 역시 해당 파일의 처음에 위치하게 되구여'-^/

"w" = 파일을 Only 쓰기 모드로 엽니다.
      중요한 점!!
      해당 파일이 이미 존재하면 덮어 씌우고 없으면 새로 만듭니다.
      만약 1.php 이라는 파일이 있는데
      fopen("1.php","w");
      를 하시면 전에 있던 1.php 파일은 모든 자료를 삭제시키고
      새로운 1.php 파일이 생성되는 것이지요'-';
      쉽게 생각해서 하드 포맷이라 생각하심이'-';;
      그리고 파일 포인터는 마찬가지로 해당 파일의 처음에 위치하게 됩니다^-'/

"w+" = 파일을 읽기와 쓰기 모드로 엽니다.
       이 녀석도 마찬가지로 해당파일이 이미 존재하면
       덮어씌워 버립니다-_-; (사악한 w 군단이라 생각하시면;;)
       이 녀석도 파일 포인터가 해당 파일의 처음에 위치하게 되요^-^/

"a" = 파일을 Only 쓰지 모드로 엽니다.
      해당 파일이 존재하지 않으면 새로 만들지만
      해당 파일이 존재하면 w 군단과 같이 완전히 새로 만드는 것이 아니라
      해당 파일에 추가로 쓰는거랍니다.
      안심할 수 있겠죠'-';;;
      아!!
      파일 포인터는 해당 파일의 마지막에 위치하게 된다구 하네요^0^/

"a+" = 파일을 읽기와 쓰기 모드로 엽니다.
       나머지는 "a"의 성질과 같아요^0^//


헥헥...;
투철한 노가다 정신....-ㅅ-;;

제가
$fp = fopen("config.php","w");
이렇게 한 이유는
일단 쓰기 모드를 취해야하니까
r 형제들은 불러도 울면서 돌아서버립니다..-ㅅ-;;;
a 형제들은 부르게 되면 처음엔 괜찮지만
만약 다시 admin.php로 설정을 하면
config.php 파일이 받게되는 값이
2개가 되어버립니다;;;

변수 법칙에 의해 나중에 씌어진
비밀번호가 적용됩니다'-';

하지만 이런 일을 계속해서 하게된다면;;
{그럴 일은 없겠지만-_-;; 만약이란 설정하에;;(전 만약이란 단어를 사랑해서-_-;)}
파일의 크기가 늘어날뿐더러(거의 1KB에서 0.7KB -_-;;;;)
미관도 않 좋아집니다;;;
예를 들어볼까요?

$pass = '1111';
$pass = '1234';
$pass = '2345';
$pass = '4563';
$pass = '3203';
$pass = '7465';
$pass = '6757';

(물론 꼭 4자리란 법은 없지만 일반적으로 4자리를 쓰므로'-';;)

보기 좀 그렇져?
(아닌가-_-;;;)

저런 걸 막기위해 '사악한 "w" 군단'을 사용하는 것입니다;;
다시 설명하지만 '사악한 "w" 군단'은 계속해서
$pass = '4자리숫자'+ ';
를 남길필요 없이 할때마다 딱 한문장만 넣을거니까요'-'

그래서
$fp = fopen("config.php","w");
이렇게 해준거랍니다^-^




그리고 소스를 다시 보시면

$name = array('$pass');                        // 배열변수 array~ 어뤠이~~~! (맞나-_-;)

이런 문장이 있습니다'-'/

주석 그대로 배열변수 입니다'-'
그냥 배열이 아닌 '스칼라' 배열 입니다^-'/
(연관 배열이라는 것도 있지만 시간상...;; 죄송-_-;)

"스칼라 배열 = 우리가 흔히 생각하는 배열로 단일값을 원소로 갖는 배열"

스칼라 배열은 배열의 참조 번호를 통하여 그 값에 접근할 수가 있습니다'-'
풀어서 배열을 입히려면..

#1

$name[] = "아무개는";   // 이것은 $name[0] 이 됩니다'-'a
$name[] = "바보라고들";        // 이건 $name[1] 이 되구요'0'a
$name[] = "말한다.";        // 요 놈은 $name[2] 가 됩니다^-^a


이것을...

#2

$name = array("아무개는", "바보라고들", "말한다.");


위와 같이 array 함수의 인자로 배열에 값을 줄 수 있고'-'
이 결과는 3개로 나누어 말한 예제 #1 과 동일하게 배열 $name에
각자의 단어가 원소로 저장됩니다'-';;
믿기지 않으시면 각자 예제를 다른 파일로 만드시고
echo "$name[0] $name[1] $name[2]";
을 넣어보세요.

아마도 페이지에는
'아무개는 바보라고들 말한다.'
라는 결과물이 출력될 거예요'-'



그리고 소스를 또(-_-;) 보시면


fwrite($fp,"<?nn$name[0] = "$pass";nn?>n");        // 차후 설명;;;
echo "
<script>
window.alert('입력하신 ID와 PasswordnnID : $id1nPass : $pass1nn로 config.php 파일에 등록되었습니다.');
</script>
<meta http-equiv='refresh' content='0;URL=login.php'>
";        

이라는 부분이 있습니다'-'
fwrite() 함수는 대충 예상하셨을 거예요'-'/
(않 그러시면 어쩔수없구여..ㅡ,.ㅡ;)

fwrite 함수는

fwrite($fp," 쓸 내용 n");

대부분 이렇게 쓰입니다;;
$fp 부분은 정하시기 나름대로이구요;;

그 밑에

echo"
<script>
window.alert('입력하신 ID와 PasswordnnID : $id1nPass : $pass1nn로 config.php 파일에 등록되었습니다.');
</script>
<meta http-equiv='refresh' content='0;URL=login.php'>
";

이 추가된 이유는
config.php 파일에 기록을 남기고 나타날..
하나의 이벤트랄까?
그런겁니다^^;



그리고 마지막으로 소스를 돌아보시면...;

fclose($fp);

가 있습니다;;
이건 말그대로 파일을 닫겠다는 것이지요;;

한마디로 그 파일에는 더 이상 관여하지 않겠다는 뜻이죠
MySQL 이라면

mysql_close();

이것과 같은거라 할 수 있죠'-'


아!!
중요한 사항;;
$pass 를 array 함수에 넣어 $name[0] 로 뽑은 이유는...

fwrite($fp,"<?nn$pass="$pass"nn?>n");

로 하고 config.php 파일을 확인해 보니까

<?

='4자리 숫자'

?>

이렇게 남더군요-_-;;;

그래서 생각끝에 생각해 낸것이 array 함수입니다;;
(물론 고수분들은 이 방법을 않 쓰시리라 믿쓥니다-ㅅ-/!!!)

array 함수를 쓰니까 먹히더군요'-';;;;;;;;;;;;

헐...;
허접이라서...=_=;;



자~~!
이젠 Lesson 2도 끝난거 같네요'-'/
그럼 다음 Lesson 3 에서는 이제 유저들로부터 비밀번호를 받고
판별하여 맞으면 해당페이지로 넘기고 틀리면 계속 그 페이지에
남기게 하는 PHP 파일(login.php)을 소스와 함께 설명을 들고(-_-;)
오겠습니다;;

그럼~~~~

(현재 시각 정오-_-;;;;;;;;;;;;;;)


-끝-
제목 글쓴이 날짜
회원관리 프로그램을 구현하고 싶은신 분들께.. [7] [폐]허접-_- 2002.03.18
PHP 인증 페이지를 만들자! - Lesson 2 수정본 #1 [5] ☺[폐]허접-_- 2002.01.24
PHP 인증 페이지를 만들자! - Lesson 1 수정본 #2 ☺[폐]허접-_- 2002.01.24
노프레임/카운터에 관련된 PHP함수 팁 몇가지 [1] 차카게살자 2001.12.28
MySQL 루트비번 분실시 대처요령 [29] zero 2001.04.18
교육용 방명록 #8 [delete.php3파일에서 넘겨받은 비밀번호를 검사하여 글을 삭제합니다.] [18] zero 2000.07.03
교육용 방명록 #7 [삭제 버튼을 눌렀을 때 비밀번호를 입력받는 부분입니다.] [5] zero 2000.07.03
교육용 방명록 #6 [수정된 값을 넘겨받아서 비밀번호를 비교하고 변경하여 줍니다.] [2] zero 2000.07.03
교육용 방명록 #3 [글쓰기 폼에서 넘어온 값을 DB에 입력하기] [5] zero 2000.07.03
교육용 방명록 #2 [글쓰기 폼 작성] [11] zero 2000.07.03
교육용 방명록 #1 [전체구성 설정, 테이블 생성, 기본함수 정의] [50] zero 2000.07.03
최근 게시물을 나타내는 원리와 방법 [55] zero 2000.03.06
교육용 메모장 #5 [21] zero 2000.07.10
교육용 메모장 #4 [18] zero 2000.07.10
교육용 메모장 #3 [16] zero 2000.07.10
교육용 메모장 #2 [18] zero 2000.07.10
교육용 메모장 #1 [53] zero 2000.07.10
윈2000, NT 또는 98에서 APM설치하기 [74] zero 2000.08.26
MySQL DB 데이타 백업/복구 하는 방법 [38] zero 2000.08.26
자동링크 만드는 방법!!! [28] zero 2000.03.06