2016-10-11 2 views
0

Я новичок в UTM (модуль отслеживания Urchin), и я хочу получить параметры UTM, где пользователь нажал ссылку (например, facebook, google, twitter) и сколько раз пользователь нажимал ссылку на тот же самый источник utm и сохраните его в базе данных mysql.Как получить UTM с помощью PHP?

У меня есть фрагмент 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) Я хочу отслеживать пользователей, с которых они пришли, когда они нажимали на определенные URL-адреса. – User014019

+0

Обычно они передаются через Url (т. Е. GET вместо POST). Кроме того, SQL-инъекция. –

ответ

1

Прежде чем беспокоиться о том, чтобы значение атрибутов UTM, у вас есть проблема безопасности, которая нуждается в некоторое внимание. В настоящее время вы принимаете un-sanitized (небезопасный) ввод пользователя (через $_POST['var']) и помещаете его прямо в запрос базы данных, что является небезопасной практикой, которая позволяет SQL-инъекцию (например, вредоносный пользователь может отправить вам специально созданную строку, которая дает им способность делать все, что им нравится в вашей базе данных).

Пожалуйста, прочитайте this Stack Overflow question о том, как избежать SQL-инъекции в PHP.

Как правило, стандартные 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-> ($ sql);', который, как я полагаю, у вас есть где-то после кода, который вы подробно описали выше. –

+0

да, я установил некоторые фиктивные значения в каждом параметре utm, но когда я проверил базу данных, значения utm не сохраняли – User014019

+0

Ok - поэтому я бы рекомендовал временно 'print_r ($ var)' вводить переменные $ utm_ перед вами выполните запрос, чтобы убедиться, что они установлены, и если они затем проверяют значение '$ result = $ conn-> query ($ sql);', чтобы увидеть, действительно ли запрос работал. AFAIK '$ result' будет истинным при успешном завершении –

Смежные вопросы