| 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>
|
| [목차] |
