Доброго времени суток, арбитраны! В этой статье вкратце расскажу про суперглобальные массивы $_GET и $_POST, а так же об их стандартном применении на проклах и лендах. После прочтения вам станет понятно, как же данные с формы перемещаются в обработчик лидов. А так же о том как собираются метки из URL вашего рекламного объявления, будь то ФБ, пуши или тизерки. Погнали!
Что такое массив в PHP?
Источник информации
Массив в PHP — это упорядоченное отображение, которое устанавливает соответствие между значением и ключом. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хеш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стек, очередь и, возможно, что-то ещё. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.
Простыми словами: массив — это структура данных, которая позволяет хранить несколько элементов в одной переменной. Это очень удобная штука тк для передачи нескольких переменных достаточно их все запихать в одну и отправить куда нужно. Так же в массив можно вкладывать другие массивы, тем самым создавать дерево массивов. Но в это не вникайте сейчас. Потом поймете. Вот пример синтаксиса:
// Использование классического синтаксиса массива
$array = array(
'foo' => 'bar',
'bar' => 'foo'
);
// Использование синтаксиса короткого массива
$array = [
'foo' => 'bar',
'bar' => 'foo'
];
Первый вариант — это классический способ. Второй — короткий, можно использовать начиная с версии PHP 5.4. Суть от написания не меняется. Массив и тот и второй работают одинаково. Если встретите в коде ваших связок такие штуки — сразу поймете что это и с чем это едят)
Так же массив может быть описан без ключей. PHP сам добавит цифровые ключи начиная с 0. Вот пример:
$array = [
'one',
'two',
'three'
];
// запись выше равнозначна следующей
$array = [
'0' => 'one',
'1' => 'two',
'2' => 'three'
];
Если вас устроят метки в виде цифр — можете юзать и такой синтаксис для массива.
А вот пример того, как обычно используются массивы в обработчиках лидов у партнерок:
// Fields to send
$post_fields = [
'stream_code' => $stream_code, // required
'client' => [
'phone' => $_POST['phone'], // required
'name' => $_POST['name'],
'surname' => $_POST['surname'],
'email' => $_POST['email'],
'address' => $_POST['address'],
'ip' => $_POST['ip'],
'country' => $_POST['country'],
'city' => $_POST['city'],
'postcode' => $_POST['postcode'],
],
'sub1' => $_GET['sub1'],
'sub2' => $_GET['sub2'],
'sub3' => $_GET['sub3'],
'sub4' => $_GET['sub4'],
'sub5' => $_GET['sub5'],
];
Тут, кстати, используется вложенный массив client. И самые наблюдательные уже заметили те два суперглобальных массива, ради которых мы здесь сегодня и собрались.
Как получить данные из массива?
Получать значения переменных из массива — проще простого. Для этого как раз и используются ключи, которые мы задали при описании. На примере из предыдущего абзаца сейчас попробуем извлечь значение переменной stream_code. Для этого нужно обратиться к описанному массиву $post_fields, в квадратных скобках указав ключ, которому мы присвоили искомую переменную:
$stream_code = $post_fields['stream_code'];
Чтобы получить значения из вложенного массива нужно сделать точно также, только продолжить цепочку из квадратных скобок. Например, мы хотим вынуть ip из массива client. Для этого пишем так:
$ip = $post_fields['client']['ip'];
И так можно докопаться до любой из переменных во вложенном массиве. Все проще простого) Надеюсь, вам все понятно. Идем дальше…
Массив $_GET
Начнем с простых истин. Массив $_GET — ассоциативный массив переменных, переданных скрипту через параметры URL (известные также как строка запроса). Простыми словами — все метки, что вы напихали в URL вашей ссылки на связку после символа «?», помещаются в массив $_GET и становятся доступными скриптам на страничке, которая откроется при переходе юзера по этой URL. Разберем пример:
https://croyman.ru/?fb_pixel=1234567890&sub_id1=pohudalka&sub_id2=zhiruha
Представим, что эта ссылка ведет на связку. Как же нам получить метки на прокле? А все очень просто, ведь мы уже знаем, что все метки после «?» попадут в массив $_GET. И для понимания, если представить, как PHP заворачивает метки в массив:
$_GET = [
'fb_pixel' => '1234567890',
'sub_id1' => 'pohudalka',
'sub_id2' => 'zhiruha'
];
Как получить значения переменных из массива мы уже разобрали выше. Создадим три переменных и положим в них значения из массива $_GET:
$fb_pixel = $_GET['fb_pixel'];
$sub_id1 = $_GET['sub_id1'];
$sub_id2 = $_GET['sub_id2'];
Сами переменные можно обозвать как угодно, но я обычно называю так же как метки указал в URL. Так потом понятнее читать код.
Массив $_GET суперглобальный, а это значит, что он доступен в любом месте скрипта. Нет необходимости описывать его как глобальную переменную для доступа в функциях и методах. Нас, как арбитранов, а не кодеров этот факт особо не волнует. Мы просто знаем, что к массиву можем обратиться где угодно в скрипте и вынуть из него все, что там лежит.
Массив $_POST
Переходим к следуещему шагу. После того, как мы выдрали метки из URL, нам нужно их отправить в обработчик. Как это сделать? Здесь вступает в работу суперглобальный массив $_POST. Что такое суперглобальный вы уже знаете)
Немного теории из букваря: массив $_POST — это ассоциативный массив данных, переданных скрипту через HTTP методом POST. Как это понять? Объясню на пальцах. Если вы посмотрите свои связки, то увидите на форме заявки примерно следующую запись:
<form class="form" id="order_form" action="order.php" method="post">
Здесь мы видим, что в order.php (файл обработчика лидов) данные отправляются именно методом POST. Это означает, что данные из всех инпутов на форме, как скрытых, так и не скрытых, после нажатия на кнопку заказа будут помещены в массив $_POST и затем отправятся в обработчик.
Разберем код формы на прокле:
<form class="form" id="order_form" action="order.php" method="post">
<input name="name" placeholder="Введите ФИО" type="text" value="" required/>
<input name="phone" placeholder="+7 900 123 45 67" type="tel" value="" required/>
<input name="sub_id1" type="hidden" value="<?=$_GET['sub_id1'];?>">
<input name="sub_id2" type="hidden" value="<?=$_GET['sub_id2'];?>">
<input name="sub_id3" type="hidden" value="<?=$_GET['fb_pixel'];?>">
<button class="btn">ЗАКАЗАТЬ</button>
</form>
На форме у нас 2 видимых поля для ввода для ФИО и номера телефона. А так же три скрытых поля для передачи меток в обработчик (о том, что поле скрыто говорит type=»hidden»). ФИО и номер вводит юзер ручками, а вот три метки мы собираем из массива $_GET, как я объяснял ранее. Объясню такой момент — вот эта запись:
<?=$_GET['sub_id1'];?>
равнозначна вот такой:
<?php echo $_GET['sub_id1']; ?>
Этим кодом мы просим PHP вывести в HTML код нашего ленда значения соответствующих переменных, которые мы вынимаем из массива $_GET. В нашем примере мы вынимаем 2 метки sub_id1 и sub_id2, а так же фб пиксель fb_pixel из этой URL:
https://croyman.ru/?fb_pixel=1234567890&sub_id1=pohudalka&sub_id2=zhiruha
а затем заносим полученные значения в скрытые поля формы.
И вот мы плавно подошли к $_POST: по нажатию кнопки «ЗАКАЗАТЬ» на форме все эти метки, вместе с ФИО и телефоном юзера, упакуются в массив $_POST и полетят в order.php. Образно массив выглядит так:
$_POST = [
'name' => 'Иванов Иван Ивыныч', // ввел юзер
'phone' => '+79001234567', // ввел юзер
'fb_pixel' => '1234567890', // наша метка
'sub_id1' => 'pohudalka', // наша метка
'sub_id2' => 'zhiruha' // наша метка
];
А в обработчике мы сможем его разобрать по кусочкам и переслать в ПП, собрать себе в файл, БД или еще куда. Как разбирать и сохранять в файл я уже писал тут.
Вот и все базовые основы по массивам, которых вам хватит, чтобы понять мои предыдущие статьи) А может, и в будущем пригодится инфа. Всем профита и бешеных РОИ, посоны!