2016-10-11 5 views
0

Ich bin neu mit UTM (Urchin-Tracking-Modul) und ich möchte die UTM-Parameter erhalten, wo der Benutzer auf den Link geklickt hat (zB Facebook, Google, Twitter) und wie oft der Benutzer den Link mit der gleichen utm-Quelle angeklickt hat Speichern Sie es in der MySQL-Datenbank.Wie bekomme ich die UTM mit PHP?

Ich habe ein PHP-Snippet, aber die utm-Parameter nicht erhalten und speichern in der Datenbank.

Wie behebt man das?

if(isset($_SERVER['HTTP_REFERER'])){ 
$utm_source = isset($_GET['utm_source']) ? $_GET['utm_source'] : ''; 
$utm_medium = isset($_GET['utm_medium']) ? $_GET['utm_medium'] : ''; 
$utm_campaign = isset($_GET['utm_campaign']) ? $_GET['utm_campaign'] : ''; 
$utm_term = isset($_GET['utm_term']) ? $_GET['utm_term'] : ''; 

echo $_SERVER['HTTP_REFERER']; 

$sql = "INSERT INTO utm_param(utm_source,utm_medium,utm_campaign) 
     VALUES('".$conn->real_escape_string($utm_source)."', 
       '".$conn->real_escape_string($utm_medium)."', 
       '".$conn->real_escape_string($utm_campaign)."')"; 
} 

utm_param db Tabellenstruktur

Describe utm_param;

+0

UTM oder UTC (Koordinaten oder Zeit)? – scaisEdge

+0

UTM (Urchin-Verfolgungsmodul) Ich möchte die Benutzer verfolgen, von denen sie stammen, wenn sie auf bestimmte URLs geklickt haben – User014019

+0

Sie werden normalerweise über die URL übertragen (d. H. GET anstelle von POST). Auch SQL-Injektion. –

Antwort

1

Bevor wir kümmern uns um den Wert der UTM-Attribute bekommen, haben Sie ein Sicherheitsproblem, das einige Aufmerksamkeit braucht. Sie nehmen derzeit unhygienische (unsichere) Benutzereingaben (über $_POST['var']) vor und stellen sie direkt in eine Datenbankabfrage, was eine unsichere Vorgehensweise ist, die SQL-Injection ermöglicht (z. B. kann ein böswilliger Benutzer Ihnen eine speziell gestaltete Zeichenfolge senden, die ihnen den Fähigkeit zu tun, was auch immer sie mögen zu Ihrer Datenbank).

Bitte lesen Sie this Stack Overflow question darüber, wie Sie SQL-Injection in PHP vermeiden können.

Typischerweise ist der Standard utm Parameter für die Verfolgung, wenn ein Benutzer von einem Teil des Abfrage-String, zB Form kommt:

http://yoursite.com?utm_source=google&utm_campaign=campaign_name

Sofern Sie etwas Nicht-Standard tun, wird dies ein GET sein Anfrage an Ihren Server (im Gegensatz zu einem POST), damit Ihre Variablen über den $ _GET Superglobal verfügbar sind. Zum Beispiel $_GET['utm_source'] und $_GET['utm_campaign']

am Tisch Schema suchen, können Sie auch auto_increment auf Ihre ID-Spalte hinzufügen müssen, so dass sie einen Wert automatisch erhalten, wenn eine neue Zeile hinzugefügt wird.

ALTER TABLE `utm_param` 
CHANGE COLUMN `id` `id` INT(100) NOT NULL AUTO_INCREMENT; 
+0

Angenommen, diese Werte sind alle gesetzt (z. B. der Verweiswert wurde vom Browser zusammen mit den utm_x-Parametern in der Abfragezeichenfolge gesendet), sollte das funktionieren. Außerdem benötigen Sie eine '$ result = $ conn-> -Abfrage ($ sql);', von der Sie annehmen, dass sie sich irgendwo nach dem Code befindet, den Sie oben beschrieben haben. –

+0

ja, ich habe einige Dummy-Werte in jedem utm-Parameter gesetzt, aber als ich die Datenbank überprüfte, speicherten die Werte von utm nicht – User014019

+0

Ok - also würde ich vorübergehend 'print_r ($ var)' ing deine $ utm_ Variablen vor dir empfehlen Machen Sie die Abfrage, um sicherzustellen, dass sie gesetzt sind, und wenn sie dann sind, überprüfen Sie den Wert von $ end = $ conn-> query ($ sql); um zu sehen, ob die Abfrage tatsächlich funktioniert hat. AFAIK '$ result' wird beim Erfolg wahr –