Изменение доступа к файлам для зарегистрированных




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2026-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

37 Comments

  1. o.nikolaev

    Правильно я понял, если разработка публикуется с доступом «для всех» (а не только для зарегистрированных), то она в эту «программу» не включается автоматически, и включена не будет?

    Цены на мой взгляд высоковаты. Надо поменьше сделать раза в два (150, 900, 1800).

    Reply ↓
  2. CheBurator

    Похоже что так… я думаю саппорт ответит точнее.

    Reply ↓
  3. CheBurator

    Подписка на полгода/год должна давать скидку…

    Reply ↓
  4. MRAK

    не уверен, что взлетит….

    на мисте вообще какой срач развели:

    http://www.forum.mista.ru/topic.php?id=413304

    Reply ↓
  5. biv75

    (4) А миста-то тут причем? Пускай разводят, но халяму пора прекращать, на содержание сайта должны быть деньги.

    Reply ↓
  6. CheBurator

    (4) Злопчинский — это я тама… на мисте знающих людей в процетном отношении примерно как рапспределение программ на Исе… 😉 Халявщики поэтому там и тусуются (как и на ИСе), а на кубани — выдавливают быстро таких, но там труднее получить содержательные ответы…

    Reply ↓
  7. vuzurp

    (5) На содержание нужно _зарабатывать_, либо просить помощи у сообщества. На просьбы это не похоже. Но и смысла работы, за которую деньги просят, я то же не понял.

    Сводить заказчика с исполнителем — это услуга.

    Помогать продавать разработки — это услуга.

    А брать плату за скачивание и только с зарегистрированных — это что? это для кого услуга? за что платить? Или это новая поддержка разработчиков, и им (разработчикам) будут отстегивать за скачивание их файлов?

    Reply ↓
  8. biv75

    (7) Платить за то чтобы завтра тоже было откуда скачивать, данный сайт оказывает огромную услугу, он дает возможность разработчикам показать и проявить себя, а остальным подчерпнуть идеи и вот именно эту посреднеческую услугу и надо оплачивать.

    Reply ↓
  9. biv75

    8+ Вот таким образом сайт и будет зарабатывать, вернее он уже зарабатывает но ничерта за это не получает

    Reply ↓
  10. kermit_80

    Ну наконец, появится ГРУППА А(актив), ГРУППА Б(болото)!! Демократия в действии ;-)) R

    Reply ↓
  11. fedor40

    Файлы (для зарегистрированных) скачиваются только один раз в сутки.

    Просто будут делать несколько эккаунтов.

    Reply ↓
  12. anbxp

    Лично мне до фонаря — будет сайт платным, или нет. Одного скачивания в сутки для личного пользования хватит за глаза и за уши. Но. Кто будет смотреть/комментировать выложенные разработки? Пропадает обратная связь. А авторам, я так понимаю, надо, чтобы их разработки протестировали и оставили мнение.

    Reply ↓
  13. ded00786

    Есть в этом здравое зерно………….

    Но по-моему сырова-то, это может отпунуть многих посетителей, да и к тому-же можно создать несколько логинов, и с каждого скачивать, что понравиться…………

    Reply ↓
  14. Boroda

    Блин, всегда крохоборы всё испоганят! Нормальный был сайт — можно было обмениваться обработками без проблем, только зарегистрируйся. Потом появились желающие сбыть свою работу за деньги…. Ладно, их дело. Но, как я понял, и сам сайт хочет, чтобы ему перепадало? От купли-продажи или от сбыта бесплатных тут обработок за уже деньги, продавая аккаунты.

    Я лично за свои обработки деньги здесь брать не собираюсь, хватит и того, что я получаю с клиентов. А самими обработками могу поделиться с «товарищами по оружию».

    Но если здесь пойдут «денежные» дела, наверное, на до будет поискать в сети иные сайты…

    Reply ↓
  15. support

    Несколько логинов не поможет.

    Обратная связь какая была, такая и осталась. Скачать разработку можно, оставить комментарий можно.

    Притом остаются файлы «для всех», скачивание их неограниченно.

    Reply ↓
  16. vip

    (15) Ответь, пожалуйста, на мои неоднократные вопросы про «серые» IP-адреса.

    Из-за одного «виновника» банится вся его сеть.

    Reply ↓
  17. support

    (16) да, как на рапидшаре.

    Reply ↓
  18. vip

    (17) Ты считаешь, это хорошо?

    Reply ↓
  19. Tatitutu

    (4) да там ….лучше промолчу. Только вот не понял там написано («Теперь не более одного плюсика в день») а здесь я этого не увидел…тките меня туда, где про звездочки )))

    Reply ↓
  20. vasilykushnir

    (14) Ну какой же ты ….. блин не могу подобрать слова….

    Тебе что? в падлу заработать 30 пунктиков вшивых? Хочешь халяву, сэр, чистоганом. Поверь (мамой клянусь!) если вы обраитесь ко мне (ИЛИ к випУ) завсегда поможем, НО если без нахрапа….

    Reply ↓
  21. Доня

    Я не спец, но сайт этот мне нравится топому, что тут многому можно научиться, даже таким пользователям как я (всего лишь бухгалтер).

    А про халявщиков страно слышить, и жаль что такая хорошая идея опять превращается в деньги!

    Reply ↓
  22. Altair777

    (21) Вы мнгоими разработками воспользовались?

    А скольким плюсик поставили? Или дельные комментарии написали?

    Reply ↓
  23. support

    (21) Вы, бухгалтер, и не можете себе 2500 руб в год выделить в фирме для своей работы? Не верю!

    Reply ↓
  24. CheBurator

    (23) Поддержива!!! Почему у меня бух мне — 1Снику — выделяет деньги если я говорю что надо будет купить готове, вместо того чтобы я на это ТУПОЕ дело тратил мое дорогостоящее время?

    Reply ↓
  25. Доня

    (22) Пользуюсь внешними отчетами и формами.

    Плюсую все что идет в программе, а идет прямо говоря не все, приходится самой дорабатывать что могу.

    А если доступ будет ограниченный, как проверишь? идет это в программе или не идет.

    А вообще СПАСИБО всем за эти разработки! Расширяют возможности бухгалтера …

    Reply ↓
  26. woozee

    интересно когда подобная участь постигнет «наше 1с»)

    Reply ↓
  27. MegaMouse

    Можно для пользователей рейтинг ввести( сколько скачал, сколько комментов оставил, сколько сам плюсанул, сколько ему плюсанули) и поиск по сайту всех комментов конкретного пользователя.

    Ну и оффтопики резать, чтоб мусор не разводить(можно и штрафовать)

    Боты и 5 аккаунтов при такой системе — геморно иметь, а обычному пользователю не помешает.

    При такой системе хоть видно будет, кто как пылесос себя ведет- от сайта берет по максимуму, а сам ничего взамен, а кто помоч пытается(себе в первую очередь и окружающим).

    Бан по IP-шникам всегда добивал меня — я против конкретно этой меры воздействия.

    Reply ↓
  28. MegaMouse

    (21) переадрисую этот вопрос к администрации сайта, в (27) та же мысль расписана подробно

    // и добавте, пожальста, возмоожность свои топики редактировать

    Reply ↓
  29. Доня

    Я заметила здесь: лучшие разработки — в свободном доступе!

    Видимо, эти разработчики самодостаточны и незакомплексованы

    Reply ↓
  30. Душелов

    А те, кто выкладывают для зарегистрированных, да еще и за деньги — закомплексованные бедняки…

    Reply ↓
  31. WiseSnake

    (29) Да нет, я думаю, что им просто наплевать на Инфостарт…

    А какие разработки на Ваш взгляд являются лучшими?

    Reply ↓
  32. Abadonna

    Молодец, Доржи ;))

    После того, кака я снес свои разработки, мой рейтинг стал действенно чист, так что по просьбе нубов я уже ничего скачать не могу.

    Т.е. никто ими раньше не пользовался, не плюсовал.

    Вот сижу, думаю: меня диплома не лишат? Я ведь уже почти 30 лет, как не студент :)))))

    Reply ↓
  33. support

    (32) Страницы можно восстановить, но тогда надо заново разместить на них разработки. Пиши на support@infostart.ru

    Reply ↓
  34. boogie

    Я всё больше убеждаюсь, что лучше заплатить за хорошую программу, чем потерять время на то, чтобы разобраться с бесплатной плохой или криво крякнутой.

    Лучше мало, но полезных пользователей, чем вся страна флудеров и спаммеров. Зачем нужен клиент, который не хочет платить? Только для одного — популярности.

    Я предлагаю разрешить скачивать при регистрации 50 обработок раз в день, а дальше не больше одной в неделю или даже в месяц.

    А также ввести программу для поддержки студентов и удалённых регионов с хорошими скидками или по IP студенческой сети давать бесплатный доступ. Можно ещё слушателям курсов 1С тоже месяц в подарок делать и с 1С будет дружба. 🙂

    Reply ↓
  35. anig99

    (34) наивняк… студентам нужно комплексной образование, а не скачка обработок

    Reply ↓
  36. boogie

    (35) на перспективу надо смотреть — они же выучатся когда-нибудь

    Reply ↓
  37. L_B

    «Зачем нужен клиент, который не хочет платить? Только для одного — популярности.»

    Ну так без популярности сайт много ли дохода принесет? Это же не обычный бизнес, он как раз от нее и зависит. Наоборот, ограничение скачиваний поубавили популярности.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *