UTM-метки значения полей пустые

227
22 декабря 2017, 02:40

HTML код:

<form action="form/sender.php" method="POST">
    <input type="hidden" name="TITLE" value="DANI. Заказ комплектующих" style="width: 75%;">
    <input type="hidden" name="UF_CRM_1464947673" value="426">
    <input type="hidden" name="SOURCE_ID" value="11">
    <input type="hidden" name="ASSIGNED_BY_NAME" value="2135">
    <input class="name" name="name" type="text" required placeholder="Имя">
    <input class="phone" name="phone" type="text" required placeholder="Телефон">
    <input type="hidden" name="utm_campaign" value="<?php echo isset($_GET['utm_campaign']) ? $_GET['utm_campaign'] : '' ;?>" />
    <input type="hidden" name="utm_medium" value="<?php echo isset($_GET['utm_medium']) ? $_GET['utm_medium'] : '' ;?>" />
    <input type="hidden" name="utm_source" value="<?php echo isset($_GET['utm_source']) ? $_GET['utm_source'] : '' ;?>" />
    <input type="hidden" name="utm_content" value="<?php echo isset($_GET['utm_content']) ? $_GET['utm_content'] : '' ;?>" />
    <input type="hidden" name="utm_term" value="<?php echo isset($_GET['utm_term']) ? $_GET['utm_term'] : '' ;?>" />
    <button type="submit">ОТПРАВИТЬ</button>
    <div style="font-size: 9px;margin-top: -20px;color: #636363;">
        <input type="checkbox" name="tandc" id="tandc" value="true" style="display: inline-block;vertical-align: top;margin-top: 0px;margin-right: 10px;width: 13px !important;" checked required><label for="tandc" style="display: inline-block; width: 90%;">Нажимая кнопку «Заказать звонок», я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных», на условиях и для целей, определенных в Согласии на&nbsp;обработку персональных данных</label>
    </div>
</form>

Обработчик:

$utm_source = trim($_POST["utm_source"]);

Прописываю print_r($_POST).

Почему массив с UTM-метками пустой?

Answer 1

UTM метки нужны чтобы отслеживать рекламную компанию по которой пришел пользователь. В вашем случае они берутся из GET, но что если посетитель пришел по ссылке из рекламе и прежде чем отправить форму - решил "побродить" по сайту? В таком случае метки уже будут утеряны.

Для того чтобы избежать этого, вам нужно на всех страницах сайта проверять - указаны ли UTM метки в адресной строке и если указаны - запоминать их, т.е.:

if (isset($_REQUEST['utm_source']) || isset($_REQUEST['utm_campaign'])){
    unset($_SESSION['utm']);
    $_SESSION['utm']['utm_source'] = $_REQUEST['utm_source'];
    $_SESSION['utm']['utm_campaign'] = $_REQUEST['utm_campaign'];
    $_SESSION['utm']['utm_medium'] = $_REQUEST['utm_medium'];
    $_SESSION['utm']['utm_term'] = $_REQUEST['utm_term'];
    $_SESSION['utm']['utm_content'] = $_REQUEST['utm_content'];
}

В таком случае у вас они будут сохраняться в сессиях (можете переделать под cookie, т.к. у вас метка cookie стоит). И тогда вам не нужно будет передавать их в форме - достаточно просто "вытянуть" необходимые значения из сессии при обработке отправленной формы. Например, вот так:

if (isset($_SESSION['utm'])){
    foreach ($_SESSION['utm'] as $name => $value){
        $queryData[$name] = $value;
    }
}
READ ALSO
Как вывести данные таблицы

Как вывести данные таблицы

Есть таблица отпусков, там есть поле видПо виду отпуска я вытаскиваю все данные

177
Не могу установить расширение cryptopro для php

Не могу установить расширение cryptopro для php

Ставлю расширение под Ubuntu server 14x64

207
Связь таблицы sql (user - profile)

Связь таблицы sql (user - profile)

Как правильно делать связи таблиц и создавать автоматически строку во второй таблице с id первой таблицы

180