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桁にそろえて表示
?>

 

 


テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル