|
PHPの練習コーナー
[ トップへ ]
2002/11/1(金)の練習
NO.4
トップページのカウンタ作成
クッキーを利用して、再読込みで6時間以内は、カウンタが回らないようにしてあります。
クッキーが有効にしてないと意味がありませんけど。
(1)クッキーの発行はsetcookie()関数を次のように使います。
setcookie("クッキー名", "クッキーの値", "有効期限");
(2)クッキーの取得は、
$HTTP_COOKIE_VARS["クッキー名"]
で取得できます。また、php.iniでregister_globalsが有効な場合は
$クッキー名
でも取得できます。
(3)ファイルの読み込み
$fp = fopen("count.txt","r");
(4)ファイルの書き込み
$fp = fopen("count.txt","w");
(5)ファイルロック
ロックをかけるには
flock($fp, 2);
ロックを解除するには
flock($fp, 3);
[ソース]
次のスクリプトはページの先頭に書きます。
クッキーの発行
<?php
if ($HTTP_COOKIE_VARS["ryokan_counter"] == "")
{
setcookie('ryokan_counter', "1", time() + 21600);
}
?>
次のスクリプトはカウンタを表示させたい部分に書きます。
カウンタ表示部
<?php
$fp = fopen("count.txt","r");
// 読み込みモードでオープン
if ($fp == FALSE)
{
print ("カウンタ読込み失敗");
exit;
}
$count = fgets($fp,
32);
// 32バイトorEOFまで取得
fclose($fp);
if ($HTTP_COOKIE_VARS["ryokan_counter"] ==
"")
{
++$count; // カウントアップ
$fp =
fopen("count.txt","w");
// 書き込みモードでオープン
if ($fp == FALSE)
{
print ("カウンタ書き込み失敗");
exit;
}
flock($fp,
2);
// ロック
fwrite($fp,
$count);
// 書き込み
flock($fp,
3);
// ロック解除
fclose($fp);
// ファイルを閉じる
}
printf("%05d",
$count);
// 5桁にそろえて表示
?>
|