-
-
$filename='online.txt';//データファイル - $cookiename='VGOTCN_OnLineCount';//Cookie名
- $onlinetime=600;//オンライン有効時間、単位: 秒 (つまり、600 は 10 分に相当します)
- $online=file($filename);
//PHP file() 関数は、ファイル全体を配列に読み取ります。 file_get_contents() と似ていますが、file() はファイルを配列として返します。配列内の各セルは、改行を含むファイル内の対応する行です。失敗した場合は false を返します
- $nowtime=$_SERVER['REQUEST_TIME'];
- $nowonline=array();
//まだ有効なデータを取得します
- foreach($online $ line){
- $row=explode('|',$line);
- $sesstime=trim($row[1]);
- if(($nowtime - $sesstime)<=$onlinetime){/ /if 有効な時間内であればデータは保存され続けますが、それ以外の場合は破棄され、カウントされなくなります
- $nowonline[$row[0]]=$sesstime;//オンライン リストを配列、セッションIDがキー名、最終通信時刻がキー値
- }
- }
/*
- @訪問者通信ステータス作成
- Cookieを使用して通信
- COOKIEは無効になりますブラウザが閉じているとき、ただしブラウザが閉じていない場合、プログラムによって設定されたオンライン時間がタイムアウトするまで、この COOKIE は有効なままになります
- */
- if(isset($_COOKIE[$cookiename])){//If COOKIE がある、つまり初めての訪問ではない場合、人数は追加されず、通信時間は更新されます
- $uid=$_COOKIE[$ cookiename];
- }else{//がある場合COOKIE はありません。初めての訪問です
- $vid=0;//訪問者 ID を初期化します
- do{//ユーザーに新しい ID を与えます
- $vid++;
- $uid='U' }while( array_key_exists($uid,$nowonline));
- setcookie($cookiename,$uid);
- }
- $nowonline[$uid]=$nowtime;// 現在の時間ステータスを更新します p>
/ /現在オンラインの人数を数えます
- $total_online=count($nowonline);
//データを書き込みます
- if($fp=@fopen($filename, 'w')){
- if(flock($fp,LOCK_EX)){
- rewind($fp);
- foreach($nowonline as $fuid=>$ftime){
- $fline=$fuid.'|' .$ftime."n ";
- @fputs($fp,$fline);
- }
- flock($fp,LOCK_UN);
- fclose($fp);
- }
- }
- echo 'document.write("' .$total_online.'" );';
- ?>
-
-
コードをコピー
|