주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

자신만의 메모장! - 4.파일기록

광수 | 2001.10.17 00:45:14 댓글: 0 조회: 487 추천: 13
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1758827
▶ 자신만의 메모장! - 4.파일기록

살짝 정리를 해보겠습니다.

현재 파일을 이용한 메모장을 제작중에 있습니다. 이름(닉)과 메모값만 입력을 받아
이를 하나의 파일에 고정된 길이로 계속 저장해 나가는 방식으로 작성하기로
했습니다.

고정된 길이로 저장하기 위한 문자열 가공은 이미 앞서 코드를 다뤄봤습니다. 이제
실제로 이 값들을 파일에 기록하고, 이를 화면에 뿌려주는 코드만 작성하면 메모장의
작성이 끝나게 됩니다.

앞서 내용처리 #1,#2에서 코드는 다뤘기 때문에 곧바로 study_write.php 파일을
작성해보도록 하겠습니다.


[study_write.php]
--------------------------------------------------------------------------------
<?

// 데이터가 저장될 파일이 없을 경우 생성하는 사용자 정의 함수
if (!file_exists("memo.cgi")) { // memo.cgi 파일이 없다면,
  touch("memo.cgi"); // 빈 파일 생성
  chmod("memo.cgi",0777); // 파일 퍼미션 변경
}

// 문자열 자르기 사용자 정의 함수
function string_cut ($string,$max) { // 문자열과 최대 길이를 인자로 받음
  $len = strlen($string); // 문자열의 길이를 계산
  if ($len <= $max) return $string; // 문자열의 길이가 최대 길이와 같거나 작을 경우 문자열 그대로 반환
  for ($i=0; $i<$max; $i++) { // 문자열의 처음부터 최대 길이까지 반복
    if (ord($string[$i])<128) { // 해당 위치의 값이 아스키 범위라면 (영문 대소문자,특수문자,숫자 등)
      $han=0; // 한글 상태 변수는 0으로
    } else { // 그 외의 영역이라면
      $han=1; // 한글 상태 변수를 1로
      $i++; // $i의 값을 1 증가. 한글은 2바이트를 차지하기 때문
    }
  }
  if ($han) $i-=2; // 만약 한글로 끝났다면 최대 길이보다 1 크기 때문에 2를 뺌.
                   // 1을 뺄 경우 한글의 중간이 잘리기 때문에 뒤에 ?등이 붙음.
  return substr($string,0,$i); // 처음부터 지정된 위치까지의 문자열 반환
}

// 에러창 띄우기 사용자 정의 함수
function error_msg ($string) { // 문자열 인자로 받음
  echo "<script>window.alert('$string');history.back();</script>"; // 에러창 띄움
  exit; // 종료
}

// 이름(닉)과 메모가 입력 안됐을 경우 에러창 띄움
if (!$memo_name) error_msg("이름을 입력해주세요.");
if (!$memo_memo) error_msg("메모를 입력해주세요.");
// 따로 문자열 처리를 하지 않았습니다. 그냥 일반적으로 값이 있는지의 여부만
// 확인하는 것이기 때문에 빈칸 하나만 있어도 넘어가게 되죠.

// 이름(닉)과 메모의 길이가 길 경우 문자열 자르기
if (strlen($memo_name)>12)  $memo_name = string_cut($memo_name,12);
if (strlen($memo_memo)>100) $memo_memo = string_cut($memo_memo,100);

// 다른 정보와 함께 고정길이 데이터 생성
$memo_data = sprintf("%18s%15s%12s%100sn",date("Y-m-dH:i:s"),$REMOTE_ADDR,
                                         $memo_name,$memo_memo);

// 파일에 기록
$fp = fopen("memo.cgi","a"); // 추가 모드로 파일 열기
fwrite($fp,$memo_data); // 내용 기록
fclose($fp); // 파일 닫기

// 쓰기 폼으로 이동
echo "<meta http-equiv='refresh' content='0; url=study_input.html'>";

?>
--------------------------------------------------------------------------------
▷ 소스보기 : http://dreamphp.com/study2/memo/study_write.php
▷ 미리보기 : http://dreamphp.com/study2/memo/study_write.phps

제일 마지막의 코드를 보면 study_input.html 파일로 이동하는 메타 태그가 있습니다.
내용 기록을 한 후에 처음 화면으로 돌아가는 것인데 기존에 작성한 study_input.html
파일에는 메모 내용을 출력하는 부분이 없습니다.

이 부분은 다음 편에 다뤄보도록 하겠습니다. ^^;


▶ 어렵다 생각되는 부분이 있으면 질문과 답변 게시판에 올려주세요. 다음 강의로는
이를 보다 확장한 공지사항이나 방명록 등을 만들어보도록 하겠습니다. 그때 처음부터
차근차근 자세히 설명해나가도록 하겠습니다. ^^;;;


* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:07)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >> 웹 프로그래밍
* 이동후 위치 : 웹 공부 >>

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:12)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (13) 선물 (0명)
첨부파일 다운로드 ( 1 )
memo5.zip | 4.5KB / 19 Download
IP: ♡.149.♡.65
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11975
관리자
2003-09-20
11528
관리자
2003-09-20
20676
지구인
2010-08-27
19457
지구인
2009-09-07
13776
SOLIDH
2010-01-29
15737
엔죠라이프
2004-10-07
16827
노아
2001-10-27
556
노아
2001-10-27
527
노아
2001-10-27
462
노아
2001-10-27
2895
네로™
2001-10-26
960
네로™
2001-10-22
1750
네로™
2001-10-22
1672
네로™
2001-10-21
2931
네로™
2001-10-21
1596
네로™
2001-10-21
542
네로
2001-10-18
660
네로
2001-10-18
532
네로
2001-10-18
1672
네로
2001-10-18
1160
네로
2001-10-18
544
네로
2001-10-18
1035
네로
2001-10-18
958
네로
2001-10-18
2437
광수
2001-10-17
532
광수
2001-10-17
487
광수
2001-10-17
425
모이자 모바일