2016-10-11 61 views
0

我是UTM新用户(Urchin跟踪模块),我想要获取用户点击链接(例如facebook,google,twitter)的UTM参数以及用户点击具有相同utm源码的链接的时间以及保存到mysql数据库。如何使用PHP获取UTM?

我有一个PHP代码片段,但utm参数没有得到并保存在数据库中。

如何解决这个问题?

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数据库表结构

Describe utm_param;

+0

UTM或UTC(坐标或时间)? – scaisEdge

+0

UTM(Urchin跟踪模块)我想跟踪用户点击特定网址时的来源 – User014019

+0

它们通常通过Url(即GET而不是POST)传输。另外,SQL注入。 –

回答

1

我们担心会在UTM属性的值之前,你有一个需要注意的一些安全问题。您目前正在使用未经消毒的(不安全)用户输入(通过$_POST['var'])并将其直接放入数据库查询中,这是一种允许SQL注入的不安全做法(例如,恶意用户可以向您发送特制字符串,能够对数据库做任何他们喜欢的事情)。请参考this Stack Overflow question关于如何避免PHP中的SQL注入。

通常,标准utm参数跟踪,其中用户来自查询字符串的组成部分,例如:

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

除非你正在做的事情不规范,这将是一个GET请求到您的服务器(而不是POST),这样您的变量将通过$ _GET超全局可用。例如$_GET['utm_source']$_GET['utm_campaign']

看你的表模式,您可能还需要添加auto_increment到您的ID列,因此,它会自动获得一个值时,增加了一个新的行。

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

假设这些值都已设置(例如,浏览器发送的引用值,以及查询字符串中的utm_x参数),这应该起作用。你还需要一个'$ result = $ conn-> query($ sql);',我假设你在上面详述的代码之后有一个地方。 –

+0

是的,我在每个utm参数中设置了一些虚拟值,但是当我检查数据库时,utm的值并没有保存 – User014019

+0

好的 - 所以我建议在你之前暂时在你的$ utm_变量中加上'print_r($ var)执行查询以确保它们已设置,并且如果它们是检查'$ result = $ conn-> query($ sql);'的值以查看查询是否真正起作用。 AFAIK'$ result'在成功时将为真 –