Web Programming >> PHP Programming
|
[목차] |
제4장 파일처리 프로그램
3. 카운터 예제 1 : 카운터 (counter1.html) <HTML> <HEAD> <TITLE>Leelab - Counter </TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <? /* 이것은 카운터 프로그램입니다. 사용자의 접속 수를 카운터하고 화면으로 보여주는 기능을 합니다. */ $DataFile = "counter1.data"; if(file_exists($DataFile)) { $fp = fopen($DataFile, 'r'); $buffer=fread($fp, filesize($DataFile)); fclose($fp); $count = intval($buffer); } else { $count = 0; } $count = $count + 1; $fp=fopen($DataFile, 'w'); fwrite($fp, $count); fclose($fp); echo "당신은 $count 번째 방문한 손님입니다. "; ?> <FONT SIZE="2" COLOR="red"><br>[F5]키를 누르시면 카운터가 증가합니다. </FONT> </BODY> </HTML>예제 2 : 카운터 (counter2.html) 예제 1을 수정하여, 같은 IP에서 접속시 카운터가 증가하지 않겠 하였다. <HTML> <HEAD> <TITLE>Leelab - Counter </TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <? /* 이것은 카운터 프로그램입니다. 사용자의 접속 수를 카운터하고 화면으로 보여주는 기능을 합니다. */ $DataFile = "counter2.data"; $remote_addr = $REMOTE_ADDR; if(file_exists($DataFile)) { $fp = fopen($DataFile, 'r'); $buffer=fread($fp, filesize($DataFile)); $col_data = explode(" || ", $buffer); fclose($fp); $count = intval($col_data[0]); $prev_addr = $col_data[1]; } else { $count = 0; } if(strcmp($prev_addr ,$remote_addr)) { $count = $col_data[0] = $count + 1; $col_data[1] = $remote_addr; $count_data = implode(" || ", $col_data); $fp=fopen($DataFile, 'w'); fwrite($fp, $count_data); fclose($fp); } echo "당신은 <b>$count</b> 번째 방문한 손님입니다. "; ?> <FONT SIZE="2" COLOR="red"><p>[F5]키를 누르시면 카운터가 증가합니다.<br> 같은 IP에서는 그대로군요... </FONT> </BODY> </HTML>예제 3 : 카운터 (counter3.html) 예제 2을 수정하여, 오늘의 카운터를 볼 수 있게 하였습니다. <HTML> <HEAD> <TITLE>Leelab - Counter </TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <? /* 이것은 카운터 프로그램입니다. 사용자의 접속 수를 카운터하고 화면으로 보여주는 기능을 합니다. */ $DataFile = "counter3.data"; $remote_addr = $REMOTE_ADDR; $today = date("Y-m-d"); if(file_exists($DataFile)) { $fp = fopen($DataFile, 'r'); $buffer=fread($fp, filesize($DataFile)); $col_data = explode(" || ", $buffer); fclose($fp); $count = intval($col_data[0]); $prev_addr = $col_data[1]; $ycount = $col_data[2]; $yday = $col_data[3]; } else { $count = 0; $ycount = 0; } if(strcmp($prev_addr ,$remote_addr)) { $count = $col_data[0] = $count + 1; $col_data[1] = $remote_addr; if(!strcmp($today,$yday)) { $ycount = $col_data[2] = $ycount + 1; $col_data[3] = $yday; }else { $ycount = $col_data[2] = 1; $col_data[3] = $today; } $count_data = implode(" || ", $col_data); $fp=fopen($DataFile, 'w'); fwrite($fp, $count_data); fclose($fp); } echo "오늘 : $ycount 번째<br> "; echo "총합 : $count 번째<br> "; ?> <FONT SIZE="2" COLOR="red"><p>[F5]키를 누르시면 카운터가 증가합니다.<br> 같은 IP에서는 그대로군요... </FONT> </BODY> </HTML>예제 4 : 카운터 (counter4.html) 예제 3을 수정하여, 오늘과 어제의 카운터를 볼 수 있게 하였습니다. <HTML> <HEAD> <TITLE>Leelab - Counter </TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <? /* 이것은 카운터 프로그램입니다. 사용자의 접속 수를 카운터하고 화면으로 보여주는 기능을 합니다. */ $DataFile = "counter4.data"; $remote_addr = $REMOTE_ADDR; $today = date("Y-m-d"); if(file_exists($DataFile)) { $fp = fopen($DataFile, 'r'); $buffer=fread($fp, filesize($DataFile)); $col_data = explode(" || ", $buffer); fclose($fp); $count = intval($col_data[0]); $prev_addr = $col_data[1]; $ycount = intval($col_data[2]); $yday = $col_data[3]; $bcount = intval($col_data[4]); } else { $count = 0; $ycount = 0; $bcount = 0; } if(strcmp($prev_addr ,$remote_addr)) { $count = $col_data[0] = $count + 1; $col_data[1] = $remote_addr; if(!strcmp($today,$yday)) { $ycount = $col_data[2] = $ycount + 1; $col_data[3] = $yday; $col_data[4] = $bcount; }else { $bcount = $ycount; $ycount = $col_data[2] = 1; $col_data[3] = $today; $col_data[4] = $bcount; } $count_data = implode(" || ", $col_data); $fp=fopen($DataFile, 'w'); fwrite($fp, $count_data); fclose($fp); } echo "오늘 : $ycount 번<br> "; echo "어제 : $bcount 번<br> "; echo "총합 : $count 번<br> "; ?> <FONT SIZE="2" COLOR="red"><p>[F5]키를 누르시면 카운터가 증가합니다.<br> 같은 IP에서는 그대로군요... </FONT> </BODY> </HTML>예제 5 : 카운터를 홈페이지에 붙이기 홈페이지 웹문서(index.html)등에 아래의 소스를 원하는 부분에 끼워 넣으면 된다. <? /* 이것은 카운터 프로그램입니다. */ $DataFile = "counter.data"; $remote_addr = $REMOTE_ADDR; $today = date("Y-m-d"); if(file_exists($DataFile)) { $fp = fopen($DataFile, 'r'); $buffer=fread($fp, filesize($DataFile)); $col_data = explode(" || ", $buffer); fclose($fp); $count = intval($col_data[0]); $prev_addr = $col_data[1]; $ycount = intval($col_data[2]); $yday = $col_data[3]; $bcount = intval($col_data[4]); } else { $count = 0; $ycount = 0; $bcount = 0; } if(strcmp($prev_addr ,$remote_addr)) { $count = $col_data[0] = $count + 1; $col_data[1] = $remote_addr; if(!strcmp($today,$yday)) { $ycount = $col_data[2] = $ycount + 1; $col_data[3] = $yday; $col_data[4] = $bcount; }else { $bcount = $ycount; $ycount = $col_data[2] = 1; $col_data[3] = $today; $col_data[4] = $bcount; } $count_data = implode(" || ", $col_data); $fp=fopen($DataFile, 'w'); fwrite($fp, $count_data); fclose($fp); } ?> <table width=150 align=center> <tr><td colspan=2> <hr size=1> </td></tr> <tr><td align=left> <font color=blue><span style="font-size:9pt;"> 오늘 :</span></font> </td><td align=right> <font color=blue><span style="font-size:9pt;"><?echo "$ycount 번";?> </span></font> </td></tr> <tr><td align=left> <font color=blue><span style="font-size:9pt;"> 어제 :</span></font> </td><td align=right> <font color=blue><span style="font-size:9pt;"><?echo "$bcount 번";?> </span></font> </td></tr> <tr><td align=left> <font color=blue><span style="font-size:9pt;"> 총합 :</span></font> </td><td align=right> <font color=blue><span style="font-size:9pt;"><?echo "$count 번";?> </span></font> </td></tr> <tr><td colspan=2 align=center> <hr size=1> <span style="font-size:8pt;">Update : 2001년 6월 18일</span></font> </td></tr></table> |
[목차] |