. .

Plugin: mechanic-visitor-counter v.1.8


Da sysalyser.de dringend nach fünf Jahren ein neues Layout benötigte, habe ich mich zur leichteren Handhabe dafür entschieden, ein vorgefertigtes Tool zur Datenverwaltung zu verwenden.

Somit bin ich bei WordPress gelandet und habe dabei auch das Plugin „mechanic-visitor-counter“ installiert.

Hier ist mir allerdings aufgefallen, dass die Art des Loggings nicht meinen Vorstellungen entsprach. Wiederkehrende Benutzer werden zwar nach Tagen getrennt, aber nicht nach IP, da die IP-Adresse der primäre Schlüssel der dahinterliegenden mySQL-Tabelle ist (nachzuvollziehen bei Standard-Installation der Version 1.8 in der originalen Datei [DocumentRoot]/wp-content/plugins/mechanic-visitor-counter/wp-statsmechanic.php). Daher ist ein mehrfaches Ablegen der IP-Adresse in der Tabelle nicht möglich.

Das bedeutet, dass somit kein Besucher der WebSite mit einer statischen IP nach zum Beispiel einer Woche als neuer Besucher (wiederkehrender Besucher) registriert werden kann.

Daher habe ich das eben genannte File etwas modifiziert:

<?PHP
/*
Plugin Name: Mechanic Visitor Counter
Plugin URI: 
Description: Mechanic Visitor Counter is a widgets which will display the Visitor counter and traffic statistics on WordPress.
Version: 1.8
Author: Aditya Subawa
Author URI: http://www.adityawebs.com
*/
global $wpdb;
define('BMW_TABLE_NAME', $wpdb->prefix . 'mech_statistik');
define('BMW_PATH', ABSPATH . 'wp-content/plugins/statsmechanic');
require_once(ABSPATH . 'wp-includes/pluggable.php');

function install(){
global $wpdb;
if ( $wpdb->get_var('SHOW TABLES LIKE "' . BMW_TABLE_NAME . '"') != BMW_TABLE_NAME )
{
$sql = "CREATE TABLE IF NOT EXISTS `". BMW_TABLE_NAME . "` (";
$sql .= "`id` int unsigned not null auto_increment,";
$sql .= "`ip` varchar(20) NOT NULL default '',";
$sql .= "`tanggal` date NOT NULL,";
$sql .= "`hits` int(10) NOT NULL default '1',";
$sql .= "`online` varchar(255) NOT NULL,";
$sql .= "PRIMARY KEY  (`id`)";
$sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1;";
$wpdb->query($sql);
 }
}

function uninstall(){
global $wpdb;
$sql = "DROP TABLE `". BMW_TABLE_NAME . "`;";
$wpdb->query($sql);
}
register_activation_hook(__FILE__, 'install');
register_deactivation_hook(__FILE__, 'uninstall');

function get_StatsMechanic(){
                          $ip      = $_SERVER['REMOTE_ADDR']; // Getting the user's computer IP
              $tanggal = date("y-m-d"); // Getting the current date
              $waktu   = time();
              // Check your by IPnya, whether the user has had access to today's
              (int) $id = 0;
              $sql = mysql_query("SELECT id FROM `". BMW_TABLE_NAME . "` WHERE ip='$ip' AND tanggal='$tanggal'");
              list($id) = mysql_fetch_row($sql);
              // If not there, save the user data to the database
              if ($id > 0) {
                mysql_query("UPDATE `". BMW_TABLE_NAME . "` SET hits=hits+1, online='$waktu' WHERE id='$id'");
              }
              else{
                mysql_query("INSERT INTO `". BMW_TABLE_NAME . "`(ip, tanggal, hits, online) VALUES('$ip','$tanggal','1','$waktu')");
              }
                                //variable
              $pengunjung       = mysql_num_rows(mysql_query("SELECT id FROM `". BMW_TABLE_NAME . "` WHERE tanggal='$tanggal' GROUP BY ip"));
              $totalpengunjung  = mysql_result(mysql_query("SELECT COUNT(hits) FROM `". BMW_TABLE_NAME . "`"), 0);
              $hits             = mysql_fetch_assoc(mysql_query("SELECT SUM(hits) as hitstoday FROM `". BMW_TABLE_NAME . "` WHERE tanggal='$tanggal' GROUP BY tanggal"));
              $totalhits        = mysql_result(mysql_query("SELECT SUM(hits) FROM `". BMW_TABLE_NAME . "`"), 0);
              $tothitsgbr       = mysql_result(mysql_query("SELECT COUNT(hits) FROM `". BMW_TABLE_NAME . "`"), 0);
              $bataswaktu       = time() - 300;
              $pengunjungonline = mysql_num_rows(mysql_query("SELECT id FROM `". BMW_TABLE_NAME . "` WHERE online > '$bataswaktu'"));

              echo "<p align=left><table width='100'>
                                        <tr><font size='2'>visits today: $pengunjung</font></tr><br/>
                    <tr><font size='2'>total visits: ".number_format($totalpengunjung, 0, '', '.')."</font></tr><br/><br/>
                    <tr><font size='2'>hits today: $hits[hitstoday]</font></tr><br/>
                    <tr><font size='2'>total hits: ".number_format($totalhits, 0, '', '.')."</font></tr><br/><br/>
                    <tr><font size='2'>who's online: $pengunjungonline</font></tr><br/>
                                        </table></p>";
}

class Wp_StatsMechanic extends WP_Widget{

    function __construct(){
         $params=array(
            'description' => 'Display Visitor Counter and Statistics Traffic', //deskripsi  dari plugin  yang di tampilkan
            'name' => 'Mechanic - Visitor Counter'  //title dari plugin
        );

        parent::__construct('WP_StatsMechanic', '', $params);
    }

  // extract($instance);
         public function form($instance)  {
    $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
    $title = $instance['title'];
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>">Title: <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_esc$
<p><label for="<?php echo $this->get_field_id('author_credit'); ?>"><?php _e('Give credit to plugin author?'); ?><input type="checkbox" class="checkbox" <?php checked( $instance['author_credit'], 'on' ); ?> id="<?php echo $this->get_fi$
<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ZMEZEYTRBZP5N&lc=ID&item_name=Aditya%20Subawa&item_number=426267&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted" target="_blank"><img sr$
<?php

  }
    public function widget($args, $instance){
        extract($args, EXTR_SKIP);
    $authorcredit = isset($instance['author_credit']) ? $instance['author_credit'] : false ; // give plugin author credit
    echo $before_widget;
    $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']);

    if (!empty($title))
      echo $before_title . $title . $after_title;;?>
         <?php get_StatsMechanic();
         if ($authorcredit) { ?>
                        <p style="font-size:10px;">
                                Plugins by <a href="http://balimechanicweb.net" title="Bali Web Design">Bali Web Design</a>
                        </p>
                        <?php }
        echo $after_widget;
  }}
add_action('widgets_init', 'register_wp_statsmechanic');
function register_wp_statsmechanic(){
    register_widget('Wp_StatsMechanic');
}
?>

Sollte die Tabelle <BMW_TABLE_NAME> (vermutlich „wp_mech_statistik“) bereits exisitieren, kann diese durch „DROP TABLE wp_mech_statistik“ gelöscht werden und die Funktion „install()“ auf irgendeine Weise einmalig erneut aufgerufen werden (z.B. in der Funktion „get_StatsMechanic();“).

Die anderen eventuell aufgefallenen kleineren Änderungen beziehen sich nur auf die Darstellung.


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>