Note that there are some explanatory texts on larger screens.

plurals
  1. POPHP page view counter
    primarykey
    data
    text
    <p>I downloaded a php view counter and I set it the database but when it comes to show the hits I am getting error. The documentation says </p> <ul> <li>USAGE: <ul> <li>In your script, use reqire_once() to import this script, then call the</li> <li>functions like PHPCount::AddHit(...); See each function for help. *</li> </ul></li> </ul> <p>Here is my demo.php where I want to show the view. But it is throwing</p> <p><code>Notice: Undefined variable: pageID in C:\xampp\htdocs\test\demo.php on line 4 1</code></p> <pre><code> &lt;?php include_once("hit.php"); echo //this is what I added. PHPCount::AddHit($pageID); ?&gt; </code></pre> <p>The below is hit.php and <strong>what I wanna know is how can I show the views on the above demo.php?</strong></p> <pre><code> &lt;?php /* * USAGE: * In your script, use reqire_once() to import this script, then call the * functions like PHPCount::AddHit(...); See each function for help. * * NOTE: You must set the database credentials in the InitDB method. */ class PHPCount { /* * Defines how many seconds a hit should be rememberd for. This prevents the * database from perpetually increasing in size. Thirty days (the default) * works well. If someone visits a page and comes back in a month, it will be * counted as another unique hit. */ const HIT_OLD_AFTER_SECONDS = 2592000; // default: 30 days. // Don't count hits from search robots and crawlers. const IGNORE_SEARCH_BOTS = true; // Don't count the hit if the browser sends the DNT: 1 header. const HONOR_DO_NOT_TRACK = false; private static $IP_IGNORE_LIST = array( '127.0.0.1', ); private static $DB = false; private static function InitDB() { if(self::$DB) return; try { // TODO: Set the database login credentials. self::$DB = new PDO( 'mysql:host=localhost;dbname=test', 'root', // Username '', // Password array(PDO::ATTR_PERSISTENT =&gt; true) ); } catch(Exception $e) { die('Failed to connect to phpcount database'); } } /* * Adds a hit to a page specified by a unique $pageID string. */ public static function AddHit($pageID) { if(self::IGNORE_SEARCH_BOTS &amp;&amp; self::IsSearchBot()) return false; if(in_array($_SERVER['REMOTE_ADDR'], self::$IP_IGNORE_LIST)) return false; if( self::HONOR_DO_NOT_TRACK &amp;&amp; isset($_SERVER['HTTP_DNT']) &amp;&amp; $_SERVER['HTTP_DNT'] == "1" ) { return false; } self::InitDB(); self::Cleanup(); self::CreateCountsIfNotPresent($pageID); if(self::UniqueHit($pageID)) { self::CountHit($pageID, true); self::LogHit($pageID); } self::CountHit($pageID, false); return true; } /* * Returns (int) the amount of hits a page has * $pageID - the page identifier * $unique - true if you want unique hit count */ public static function GetHits($pageID, $unique = false) { self::InitDB(); self::CreateCountsIfNotPresent($pageID); $q = self::$DB-&gt;prepare( 'SELECT hitcount FROM hits WHERE pageid = :pageid AND isunique = :isunique' ); $q-&gt;bindParam(':pageid', $pageID); $q-&gt;bindParam(':isunique', $unique); $q-&gt;execute(); if(($res = $q-&gt;fetch()) !== FALSE) { return (int)$res['hitcount']; } else { die("Missing hit count from database!"); return false; } } /* * Returns the total amount of hits to the entire website * When $unique is FALSE, it returns the sum of all non-unique hit counts * for every page. When $unique is TRUE, it returns the sum of all unique * hit counts for every page, so the value that's returned IS NOT the * amount of site-wide unique hits, it is the sum of each page's unique * hit count. */ public static function GetTotalHits($unique = false) { self::InitDB(); $q = self::$DB-&gt;prepare( 'SELECT hitcount FROM hits WHERE isunique = :isunique' ); $q-&gt;bindParam(':isunique', $unique); $q-&gt;execute(); $rows = $q-&gt;fetchAll(); $total = 0; foreach($rows as $row) { $total += (int)$row['hitcount']; } return $total; } /*====================== PRIVATE METHODS =============================*/ private static function IsSearchBot() { // Of course, this is not perfect, but it at least catches the major // search engines that index most often. $keywords = array( 'bot', 'spider', 'spyder', 'crawlwer', 'walker', 'search', 'yahoo', 'holmes', 'htdig', 'archive', 'tineye', 'yacy', 'yeti', ); $agent = strtolower($_SERVER['HTTP_USER_AGENT']); foreach($keywords as $keyword) { if(strpos($agent, $keyword) !== false) return true; } return false; } private static function UniqueHit($pageID) { $ids_hash = self::IDHash($pageID); $q = self::$DB-&gt;prepare( 'SELECT time FROM nodupes WHERE ids_hash = :ids_hash' ); $q-&gt;bindParam(':ids_hash', $ids_hash); $q-&gt;execute(); if(($res = $q-&gt;fetch()) !== false) { if($res['time'] &gt; time() - self::HIT_OLD_AFTER_SECONDS) return false; else return true; } else { return true; } } private static function LogHit($pageID) { $ids_hash = self::IDHash($pageID); $q = self::$DB-&gt;prepare( 'SELECT time FROM nodupes WHERE ids_hash = :ids_hash' ); $q-&gt;bindParam(':ids_hash', $ids_hash); $q-&gt;execute(); $curTime = time(); if(($res = $q-&gt;fetch()) !== false) { $s = self::$DB-&gt;prepare( 'UPDATE nodupes SET time = :time WHERE ids_hash = :ids_hash' ); $s-&gt;bindParam(':time', $curTime); $s-&gt;bindParam(':ids_hash', $ids_hash); $s-&gt;execute(); } else { $s = self::$DB-&gt;prepare( 'INSERT INTO nodupes (ids_hash, time) VALUES( :ids_hash, :time )' ); $s-&gt;bindParam(':time', $curTime); $s-&gt;bindParam(':ids_hash', $ids_hash); $s-&gt;execute(); } } private static function CountHit($pageID, $unique) { $q = self::$DB-&gt;prepare( 'UPDATE hits SET hitcount = hitcount + 1 ' . 'WHERE pageid = :pageid AND isunique = :isunique' ); $q-&gt;bindParam(':pageid', $pageID); $unique = $unique ? '1' : '0'; $q-&gt;bindParam(':isunique', $unique); $q-&gt;execute(); } private static function IDHash($pageID) { $visitorID = $_SERVER['REMOTE_ADDR']; return hash("SHA256", $pageID . $visitorID); } private static function CreateCountsIfNotPresent($pageID) { // Non-unique $q = self::$DB-&gt;prepare( 'SELECT pageid FROM hits WHERE pageid = :pageid AND isunique = 0' ); $q-&gt;bindParam(':pageid', $pageID); $q-&gt;execute(); if($q-&gt;fetch() === false) { $s = self::$DB-&gt;prepare( 'INSERT INTO hits (pageid, isunique, hitcount) VALUES (:pageid, 0, 0)' ); $s-&gt;bindParam(':pageid', $pageID); $s-&gt;execute(); } // Unique $q = self::$DB-&gt;prepare( 'SELECT pageid FROM hits WHERE pageid = :pageid AND isunique = 1' ); $q-&gt;bindParam(':pageid', $pageID); $q-&gt;execute(); if($q-&gt;fetch() === false) { $s = self::$DB-&gt;prepare( 'INSERT INTO hits (pageid, isunique, hitcount) VALUES (:pageid, 1, 0)' ); $s-&gt;bindParam(':pageid', $pageID); $s-&gt;execute(); } } private static function Cleanup() { $last_interval = time() - self::HIT_OLD_AFTER_SECONDS; $q = self::$DB-&gt;prepare( 'DELETE FROM nodupes WHERE time &lt; :time' ); $q-&gt;bindParam(':time', $last_interval); $q-&gt;execute(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload