我是UTM(Urchin跟踪模块)的新用户,我想获取用户点击链接的UTM参数(例如facebook,google,twitter)以及用户点击链接的时间与用户数量相同并将其保存到mysql数据库。
我有一个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 db table structure
答案 0 :(得分: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;