Скрипт сохранения заявок в CSV-таблицу

Данный скрипт позволяет сохранять информацию по лидам, которые вы отправляете в партнерку, в CSV-файл. Такая информация полезна для аналитики, а также для сбора аудитории фб.

Скрипт принимает и обрабатывает запросы вида, например
site.ru/?name=Chunga&phone=79876543210&geo=RU&offer=Nutra&other=Partnerka
Порядок параметров запроса определяет порядок колонок в таблице. Важно, чтобы в запросе был передан номер телефона в параметре phone.

В первую колонку скрипт пишет дату и время создания записи.
Также скрипт проверяет номер телефона на уникальность во избежание дублей.

Логика скрипта простая и описана в комментариях к коду.

<?php
/*
// Скрипт принимает и обрабатывает запросы вида
// site.ru/?name=kimoncar&phone=79876543210&geo=RU&offer=Idealica&other=Partnerka
//
// ВАЖНО, чтобы в запросе обязательно передавался телефон в параметре phone
//
// Author: kimoncar
// Copyright https://uproof.pro
*/

//Работаем, если передан телефон
if ($_GET['phone']) {
  //Разбираем параметры GET запроса в массив и подготавливаем данные для записи
  mb_parse_str($_SERVER['QUERY_STRING'], $get_data);

  //Вырезаем из телефона все символы, кроме цифр
  $get_data['phone'] = preg_replace('/[^0-9]/', '', $get_data['phone']);

  //Добавляем дату и время записи
  $date = array('date' => date('d.m.Y H:i:s'));
  $data[] = $date + $get_data;

  //Имя файла CSV-таблицы
  $file = 'table.csv';

  //Открываем, либо создаем и открываем файл для чтения
  $list = readCsv($file);

  //Если таблица не пустая
  if (count($list) > 0) {
    //Получаем записи для проверки на дубли по номеру телефона
    foreach ($list as $key=>$row) {
      $phones[] = $row[2]; // цифра 2 указывает на колонку таблицы с номерами телефонов
    }
    //Проверяем на дубль перед записью
    if (!in_array($get_data['phone'], $phones)) {
      //Если строки с таким телефоном нет, то пишем в таблицу
      writeCSV($file, $data);
    }
  } else {
    //Если таблица пустая, то делаем первую запись
    writeCSV($file, $data);
  }
	
  //Вывод содержимого таблицы для теста
  /*
  echo "<pre>";
  print_r(readCsv($file));
  echo "</pre>";
  */
}

//Функция чтения файла CSV
function readCsv($file) {
  if (($fp = fopen($file, "a+")) !== FALSE) {
    while (($data_table = fgetcsv($fp, 0, ";")) !== FALSE) {
      $list[] = $data_table;
    }
    fclose($fp);
  }
  return $list;
}

//Функция записи в файл CSV
function writeCSV($file, $data) {
  $fp = fopen($file, 'a+');
  foreach ($data as $fields) {
    fputcsv($fp, $fields, ';', '"');
  }
  fclose($fp);
}
?>
Этот скрипт нужно положить на хостинг и обращаться к нему GET-запросами.
Например, в файле, который обрабатывает данные с формы и отправляет в партнерку (api.php или getform.php) можно добавить код отправки GET-запроса:
$savetotable = array(
  'name' => $name,
  'phone' => $phone,
  'geo' => $country,
  'offer' => 'Idealica',
  'other' => 'Partnerka'
);
file_get_contents('http://site.ru/?'.http_build_query($savetotable));
Значения переменных $name, $phone и $country берем из массива POST, который был передан формой.
Передаваемых параметров может быть сколько угодно.
17.05.2020 г. 331

Комментарии ()

    Комментарии

    UpRoof.pro 2020