[고씨]님이 남기신 글:
>안녕하세요... 항상 이곳에 감사하고 있는
사람입니다..
>
>php 를 질문 해도 되는지 모르지만 답답해서 질문
해봅니다..
>
>저는 조그만 서버를 집에 구축해서 사용하고
있습니다..
>
>서버 구축할 때 이곳에 질문을 했는데 항상 시원한
답변에
>
>거의 모든 문제를 해결할수 있었습니다..
>
>저의 서버를 혼자 쓰기 아까워서 다른 사람들과 공유를 하고
>
>있습니다.. 서버가 없어서 공부하지 못하는 분들을 위해서
무료로
>
>운영하고 있는데.. 어떤 분들을 신청만 하고 아예 접속을 하지
않는
>
>분들이 있더군요.. 그래서 1달에 한번 씩 로그 파일을
분석해서
>
>한 번도 접속이 없는 분들은 아뒤를 삭제하고 있습니다..
근데
>
>일일이 손으로 할려구 하니 시간이 너무 많이 걸리
더군요..
>
>질문은요..
----->
좋은 일 하시는군요........
>
>쉘에서 last 하면 접속 한 사람들이 나옵니다..
>
>그래서 그걸 파일로 저장 합니다..
>
>last > last.txt 이렇게요..
>
>그리고 php로 분석을 하고 DB에 저장을 할려고 합니다..
>
>대충 머릿속에 그려지는데.. 문제는
>
>last 로 저장된 파일이
>
>bourree pts/0 192.168.1.2 Sun Jul 1 16:12 still logged
in
>navy ftpd5625 203.240.170.46 Sun Jul 1 14:24 - 15:01
(00:37)
>navy ftpd5593 203.240.170.46 Sun Jul 1 14:16 - 14:17
(00:00)
>deliz pts/0 61.78.194.45 Sun Jul 1 14:16 - 14:30
(00:14)
>navy ftpd5550 210.217.168.245 Sun Jul 1 14:14 - 14:19 (00:05)
>
>이런 식으로 되는데요... 필드가 ID , pts, ip, 요일, 월, 날짜....
이런 식으로 됩니다..
>
>근데.. 각 필드 값마다 칸 수가 틀려서 DB에 저장을 하게되면
다른
>
>필드의 값도 같이 저장이 되더군요.. 그래서 각
필드마다
>
>한 칸씩만 남겨 놓게 되면 DB에 저장을 할 때 " "로
구분이 되니까
>
>정확하게 입력을 시킬수 있을거 같습니다.. 근데
>
>그게 아무리 머리를 짜고 해도 안되더군요.. 필드값마다 한
칸만
>
>남겨놓고 나머지는 지우고 싶은데.. 혹시 아시는분은 설명좀
부탁 드립니다..
========================================
- explode() 함수
- trim()함수
- list() 함수
- split() 함수
- file() 함수
만 알고 있어도 싶게 해결할 수 있습니다.
여러가지 알고리즘이 나올 수 있겠지만
첫번째 줄하고 그 다음줄의 공통점을 찾아야 합니다.
아래소스에서는
그 공통점 ':' 이므로 ...
---------------------------------
## 함수로 만들면 더 편하겠군요..
if($file=@file("last.txt")) {
for($i=0;$i<count($file)-1;$i++) {
$j = $i - 1;
$last = explode(":",$file[$i]); // 서로 구별
list($db[id][$j],$db[pts][$j],$db[ip][$j],$db[day][$j],$db[moon][$j],
$db[date][$j],$db[time][$j]) = split("
+",$last[0]);
$db[time][$j] .= ":" . $last[1];
if($last[2]) $db[time][$j] .= ":" . $last[2];
if($last[3]) $db[time][$j] .= ":" . $last[3];
}
} else {
echo "file not found";
}
## 아래와 같이 테스트해 봅니다.
##
echo "<table width=100% border=1>\n";
for($j=0; $j< count($db[id]); $j++) {
echo "<tr>\n".
" <td>".$db[id][$j]."</td>\n".
" <td>".$db[pts][$j]."</td>\n".
" <td>".$db[ip][$j]."</td>\n".
" <td>".$db[day][$j]."</td>\n".
" <td>".$db[moon][$j]."</td>\n".
" <td>".$db[date][$j]."</td>\n".
" <td>".$db[time][$j]."</td>\n".
"</tr>\n".
"";
}
echo "</table>\n";
----------------------
방금 테스트해 보았습니다..
잘 나옵니다.
|