Я новичок в UTM (модуль отслеживания Urchin) и хочу получить параметры UTM, по которым пользователь нажимал ссылку (например, facebook, google, twitter), и сколько раз пользователь нажимал на ссылку с тем же источником utm и сохранял ее. в базу данных 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
Прежде чем беспокоиться о получении значения атрибутов UTM, у вас есть проблема безопасности, требующая некоторого внимания. В настоящее время вы принимаете необработанный (небезопасный) пользовательский ввод (через $_POST['var']
) и помещать его прямо в запрос к базе данных, что является небезопасной практикой, допускающей внедрение SQL-кода (например, злонамеренный пользователь может отправить вам специально созданную строку, которая дает ему возможность делать с вашей базой все, что угодно).
Пожалуйста, прочитайте этот вопрос переполнения стека о том, как избежать внедрения SQL в PHP.
Как правило, стандарт utm
параметры для отслеживания того, откуда пользователь приходит из строки запроса, например:
http://yoursite.com?utm_source=google&utm_campaign=campaign_name
Если вы не делаете что-то нестандартное, это будет GET-запрос к вашему серверу (в отличие от POST), поэтому ваши переменные будут доступны через суперглобальный $ _GET. Например $_GET['utm_source']
а также $_GET['utm_campaign']
Глядя на схему таблицы, вам также может понадобиться добавить auto_increment
в столбец идентификатора, чтобы он автоматически получал значение при добавлении новой строки.
ALTER TABLE `utm_param`
CHANGE COLUMN `id` `id` INT(100) NOT NULL AUTO_INCREMENT;
Других решений пока нет …