2016-09-26 6 views
0

私が達成しようとしているのは、各PHPページの単純なPHPページビューカウンターです。これはMYSQLデータベースでも実現できますが、厳密にPHP(私はすでに達成した)とビューのカウンタ。すべてのWebページにPHPページビューカウンターを追加

すでに動作しているスクリプトが見つかりましたが、1ページ分のビューしか表示されませんでした。各ページにカウンタを含めるようにコードを編集する方法があれば、私は不思議でした。そのページとは異なります。

私は指示が続くがわかっウェブサイトはhttp://tutorial.world.edu/web-development/how-to-create-page-view-hit-counter-code-using-php-script/

であり、これは私が私のニーズに編集されたことを、私のコードです:

<p class="num-of-views">Views: <strong><?php echo pageview_counter(); ?></strong></p> 

<?php 
function pageview_counter(){ 
if (isset($visitor)){ 
if ($visitor=="visited") 
include("pageview-counter.txt"); 
} else { 
$file=fopen("pageview-counter.txt","r+"); 
$result=fread($file,filesize("pageview-counter.txt")); 
fclose($file); 
$result += 1; 
$file=fopen("pageview-counter.txt","w+"); 
fputs($file,$result); 
fclose($file); 
include("pageview-counter.txt"); 
} 
} 
?> 

とカウンター用私は自分のウェブサイトのディレクトリにテキストファイルを作成しました。私が望むものが実際に達成できるかどうかを知りたいだけです。どんな助けでも大歓迎です!前にコメントしたよう

+0

ページごとに別々のテキストファイルですか?私は本当にこれを良い考えだとは思わない。 – nogad

+0

最終的な目標は、各ページのページビューを個別のカウンターとして追跡することです。 – Damien

+0

これは初歩的なことですが、ファイル名にページ名を追加するだけでは、ページが訪問されたときにカウンタが増分されませんでした。あなたのトラッキング方法は、訪問者をトラッキングする方法がトラップする必要がある彼らが各ページを訪問した場合でも.. – Damien

答えて

0

は、MySQLデータベースは、ここでは、より良い選択肢だろうが、あなたの代わりにファイルを使用して主張すれば、私は、カスタムINIファイルとなるだろう:

page1 = 0 
page2 = 0 
page3 = 0 

あなたはできるだけ多くのページを追加することができますあなたが望むように、そしてコースの名前を変更してください。ちょうどそれをpageCounts.iniとして保存してください。次に、このiniファイルを読み書きできるようにする必要があります。私は、このために別々のPHPファイルを作成し、ページに含めることをお勧め:

<?php 

// Parse the ini file (Read) 
$ini = parse_ini_file("pageCounts.ini"); 

// Save to ini file (Write) 
function write_php_ini($array, $file = "pageCounts.ini") 
{ 
    $res = array(); 
    foreach($array as $key => $val) 
    { 
     if(is_array($val)) 
     { 
      $res[] = "[$key]"; 
      foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"'); 
     } 
     else $res[] = "$key = ".(is_numeric($val) ? $val : '"'.$val.'"'); 
    } 
    safefilerewrite($file, implode("\r\n", $res)); 
} 

function safefilerewrite($fileName, $dataToSave) 
{ if ($fp = fopen($fileName, 'w')) 
    { 
     $startTime = microtime(TRUE); 
     do 
     {   $canWrite = flock($fp, LOCK_EX); 
      // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load 
      if(!$canWrite) usleep(round(rand(0, 100)*1000)); 
     } while ((!$canWrite)and((microtime(TRUE)-$startTime) < 5)); 

     //file was locked so now we can store information 
     if ($canWrite) 
     {   fwrite($fp, $dataToSave); 
      flock($fp, LOCK_UN); 
     } 
     fclose($fp); 
    } 

} 

?> 

出典:iniOperations.phpとしても保存How to read and write to an ini file with PHP

、あなたがカウンターを必要とするページに含めます。 page1を、カウンタを含むページに変更します。

<?php 

// Include iniOperations.php if it isn't included yet 
require_once "iniOperations.php"; 

// Show the current number of visits: 
echo "Number of visits to this page: ". $ini["page1"]; 

// Increase the number of visits by 1 and write to ini file 
$ini["page1"]++; 

write_php_ini($ini); 

?> 
+0

ありがとうございました!エコーに少しスタイリングを適用する方法はありますか?(テキストを小さくして色を変える) –

+0

@ A.Clarke確かに、エコーを 'echo"に変更してください。"; 'cssファイルを使って' pageVisits'クラスのスタイルを設定することができます: '.pageVisits {color:#ff0000; font-size:10px; } '例えば – icecub

+0

ありがとう! –

関連する問題