Ein besserer Weg um Statistiken zu bekommen

Ich suche keine spezifische Antwort, sondern eher eine allgemeine Richtung.

Vor kurzem habe ich beschlossen, ein eigenes Statistik-Plugin zu erstellen. Ich weiß, es gibt Tonnen da draußen, aber ich wollte es mir selbst machen. Ich dachte mir, wie schwer kann das sein? Erstellen Sie einfach eine Tabelle, protokollieren Sie die IP und speichern Sie bei jeder Seitenaktualisierung Daten in einer Tabelle.

Das Problem, das ich habe, ist, dass die Statistiken zu hoch zu sein scheinen. Ich habe mein Plugin auf einem Test-Batch von Websites mit PR von ~ 1 bereitgestellt, und das Plugin zeigt Tausende von Besuchen, und ich weiß, dass es nicht so viele Unikate gibt.

Hier ist das gesamte Plugin: https://gist.github.com/1469300

Hier ist meine processbesucherfunktion.

/** * Process visitor * * Checks whether used is "logged" or not, * Adds the user to the unique table if not logged, * adds a hit using the user_id if she is logged * */ function vsp_process_visitor() { global $wpdb; $visits_table = $wpdb->prefix . "vsp_visits"; if ( vsp_visitor_logged_in() ) { vsp_update_count(); } if ( !vsp_visitor_logged_in() ) { vsp_new_record( $visits_table ); } } 

Hier ist die Überprüfung, ob die Sitzung eingestellt ist oder nicht.

 /** * Checks user state * * Checks whether a user session is set * Logged in if set * */ function vsp_visitor_logged_in() { $logged_in = false; if ( isset( $_SESSION[ 'vsp_user' ] ) ) { $logged_in = true; } return $logged_in; } 

Hier ist die function, die Daten einfügt.

 /** * Creates new unique and hit * * Inserts data into the unique table and the * hits table, if allowed. * */ function vsp_new_record( $table ) { $ip = get_ip(); global $wpdb; $hits_table = $wpdb->prefix . "vsp_hits"; /* Insert data into the visitors table */ $data = array ( 'ip' => $ip ); if ( valid_time($table) ) { $wpdb->insert ( $table, $data ); } $userID = $wpdb->get_var( 'select `id` from ' . $table . ' where `ip` = "' . $ip . '" order by `id` desc limit 1;'); $_SESSION[ 'vsp_user' ] = $userID; /* Insert data into the hits table */ $data = array( 'visit_id' => $userID ); if ( valid_time($hits_table) ) { $wpdb->insert ( $hits_table, $data ); } } 

Der Code wird bei einer Aktualisierung ausgeführt. Meine Frage ist, wenn ein Suchroboter meine Website besucht, wird er eine Seitenaktualisierung “auslösen” und eine Tabelle in meiner Statistikdatenbank erstellen, die meine Ergebnisse verzerrt.

Anwendungslogik

Ein Benutzer kommt auf die Seite Frage: Ist die Sitzung eingestellt? Wenn nein, dann erstellen Sie eine Sitzung mit der IP des Benutzers und fügen Sie einen Treffer und ein eindeutiges hinzu. Wenn ja, fügen Sie einen Treffer mit der IP des Benutzers hinzu

Vermisse ich etwas anderes?

Solutions Collecting From Web of "Ein besserer Weg um Statistiken zu bekommen"

Sie haben hier ein sehr großes Problem – Sie verwenden $_SESSION .

WordPress verwendet standardmäßig keine Sitzungsvariablen. Also wird isset( $_SESSION['vsp_user'] ) immer false weil WP die Dinge nicht verfolgt.

Es gibt einige zusätzliche Änderungen, die Sie vornehmen müssen, und Hooks, an die Sie sich binden müssen, um Sitzungen in WP zu ermöglichen. Um Ihnen den Einstieg zu erleichtern, hier einige Ressourcen:

  • Hinzufügen von Sitzungen in WordPress
  • Sitzungen in WordPress verwenden
  • Sitzungen in WordPress verwenden (Ja, dies ist ein anderer Artikel)
  • Gewusst wie: Aktivieren Sie die Verwendung von Sitzungen in Ihrem WordPress-Blog

Sobald Sie die Sitzungen aktiviert haben, sollten Sie weit weniger “falsch positive” Ergebnisse in Ihrem Statistik-Tracking sehen.